JSONPath Finder
Query JSON using JSONPath expressions with real-time results
Shortcuts: Ctrl+Enter run · Ctrl+L clear · Ctrl+D download
About JSONPath Finder
JSONPath is a query language for JSON, similar to XPath for XML. This tool lets you write JSONPath expressions and see matching results in real time as you type. It is perfect for exploring large, deeply nested API responses, extracting specific fields for data processing, or learning the JSONPath syntax interactively.
- ✓Real-time results as you type your JSONPath expression
- ✓Supports the full JSONPath syntax: dot notation, bracket notation, wildcards, filters, and recursive descent
- ✓Highlights matched paths in the result for easy navigation
- ✓Useful for exploring unknown JSON structures from APIs
Querying JSON with JSONPath — A Field Guide
When an API response has dozens of nested fields and you only care about three of them, writing out a chain of property accesses gets tedious — and breaks the moment one of those fields is missing. JSONPath solves this by letting you describe what you want with a single expression, instead of how to walk the tree to get there.
The core syntax
- ·`
Free JSONPath Finder & Expression Tester Online | JSONProTools — the root of the document; every expression starts here - ·`.key` or `['key']` — access a named property (bracket notation is required when a key contains spaces or special characters)
- ·`[n]` — access the element at index n in an array
- ·`[*]` — wildcard; matches every element of an array or every value of an object
- ·`..key` — recursive descent; finds every property named "key" at any depth, no matter how deeply nested
- ·`[start:end]` — array slice, same convention as Python slicing
- ·`[?(@.field == value)]` — filter expression; keeps only elements where the condition on `@` (the current element) is true
Worked example
{
"store": {
"books": [
{ "title": "JSON at Scale", "price": 28, "inStock": true },
{ "title": "Querying Data", "price": 15, "inStock": false },
{ "title": "API Design", "price": 22, "inStock": true }
]
}
}- ·`$.store.books[*].title` → all three titles
- ·`$.store.books[0].title` → "JSON at Scale" (first book only)
- ·`$.store.books[?(@.inStock == true)].title` → titles of in-stock books only
- ·`$..price` → every "price" value in the document, however deeply nested
Where JSONPath earns its keep
- ·Pulling a handful of IDs or names out of a large, unfamiliar API response without writing a parsing script
- ·Checking whether a deeply nested field exists anywhere in a payload using recursive descent (`..`)
- ·Filtering an array down to the items that match a condition, e.g. only failed jobs or only items over a price threshold
- ·Exploring an unfamiliar JSON shape interactively before writing the equivalent code in your own language
Tip: JSONPath was never formalized into a single official standard the way XPath was for XML, so libraries (and this tool) vary slightly in their support for advanced filters and functions. If you plan to run the same expression in your application code, test it against the actual library you'll use (e.g. jsonpath-plus for JavaScript, jsonpath-ng for Python) — the basic dot/bracket/wildcard syntax is universal, but filter expression syntax can differ.
JSONPath vs. plain property access
Plain property access like `data.store.books[0].title` only works if you already know the exact shape and that every step exists. JSONPath's wildcards, recursive descent, and filters let one expression match many possible locations or many elements at once — which is exactly what you want when exploring data whose shape you don't fully know yet, or when the shape varies between records.