jmespath
JSON Matching Expressions
Install
jmespath on PyPI
pip
pip install jmespathuv
uv add jmespathpoetry
poetry add jmespathPackage facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 203 days since the last release |
| Last repo commit | |
| First released | |
| Popularity | one of the 100 most-downloaded packages on PyPI (30-day window, as of 2026-08-13) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-13) |
Evidence: jmespath-1.1.0-py3-none-any.whl
About jmespath
from the package's own PyPI description — quoted content, verbatim
JMESPath
.. image:: https://badges.gitter.im/Join Chat.svg :target: https://gitter.im/jmespath/chat
JMESPath (pronounced "james path") allows you to declaratively specify how to extract elements from a JSON document.
For example, given this document::
{"foo": {"bar": "baz"}}
The jmespath expression foo.bar will return "baz".
JMESPath also supports:
Referencing elements in a list. Given the data::
{"foo": {"bar": ["one", "two"]}}
The expression: foo.bar[0] will return "one".
You can also reference all the items in a list using the *
syntax::
{"foo": {"bar": [{"name": "one"}, {"name": "two"}]}}
The expression: foo.bar[*].name will return ["one", "two"].
Negative indexing is also supported (-1 refers to the last element
in the list). Given the data above, the expression
foo.bar[-1].name will return "two".
The * can also be used for hash types::
{"foo": {"bar": {"name": "one"}, "baz": {"name": "two"}}}
The expression: foo.*.name will return ["one", "two"].
Installation
You can install JMESPath from pypi with:
.. code:: bash
pip install jmespath
API
The jmespath.py library has...
Read as markdown · JSON record · Source repository · Homepage
AI interpretation — verify before relying
AI-generated interpretation of the package facts above; every digit, version, license, or vulnerability id it cites is grounded in the facts already shown on this page
JMESPath is a query language for extracting and transforming data from JSON documents using declarative path expressions, supporting nested object access, list indexing, wildcards, and custom functions.
Minimal friction: pure Python wheel with zero runtime dependencies, active maintenance (last commit 2026-04-20), and 13+ years of stable releases since 2013.
MIT license permits unrestricted use, modification, and distribution in both open-source and proprietary projects with only attribution required.
Usage
pip install jmespath
import jmespath
result = jmespath.search('foo.bar', {'foo': {'bar': 'baz'}})
print(result) # Output: 'baz'
Requires Python 3.9 or later.
Verdict: Stable, well-maintained JSON query tool in the top 100 PyPI packages with zero security vulnerabilities, no dependencies, and permissive MIT licensing—a low-risk choice for JSON extraction tasks.
Needs verification
- Performance characteristics and scalability limits for very large JSON documents or deeply nested queries.
- Adoption rate and real-world usage patterns beyond the top-100 popularity tier metric.
Similar packages
permissive · top 100 on PyPI
jsonpath-ngpermissive · top 1,000 on PyPI
srslypermissive · top 1,000 on PyPI
databricks-labs-blueprintunclear · top 1,000 on PyPI
sqlglotpermissive · top 1,000 on PyPI
rfc3987-syntaxpermissive · top 1,000 on PyPI
pdfminer.sixpermissive · top 1,000 on PyPI
respxpermissive · top 1,000 on PyPI
overridespermissive · top 1,000 on PyPI
ordered-setpermissive · top 1,000 on PyPI