skillfed

jmespath

JSON Matching Expressions

jmespath Permissive license MIT Active 2,452 v1.1.0 released

Install

jmespath on PyPI

pip

pip install jmespath

uv

uv add jmespath

poetry

poetry add jmespath

Package 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

Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseNatural Language :: EnglishProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPy

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.
json query languageextract data from jsonjmespath expressionsjson path selectordeclarative json filteringjson transformationnested json access

Similar packages