JSONPath Extractor - Query JSON, Get Pointers + Values avatar

JSONPath Extractor - Query JSON, Get Pointers + Values

Pricing

from $0.40 / 1,000 ran jsonpath queries

Go to Apify Store
JSONPath Extractor - Query JSON, Get Pointers + Values

JSONPath Extractor - Query JSON, Get Pointers + Values

Evaluate up to 50 JSONPath expressions against pasted JSON or a URL: every match returned with its JSON Pointer and value, filters/wildcards/recursive descent supported (jsonpath-plus 10.3). $0.0005 per expression, no start fee, invalid expressions never charged. No paid JSONPath rival measured.

Pricing

from $0.40 / 1,000 ran jsonpath queries

Rating

0.0

(0)

Developer

Broke to Built

Broke to Built

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

JSONPath Extractor — Query Any JSON by Expression, Get Pointers + Values

Run JSONPath expressions against any JSON document — pasted or fetched from a URL — and get every match back with its JSON Pointer and value. Evaluate up to 50 expressions against the same document in one run, online, by API, or as an agent tool via Apify MCP.

Pulling three fields out of a deeply nested API response shouldn't require writing a parser. Give this actor a document and expressions like $.store.book[*].title or $..price; each expression yields one record with all matches, exact locations included.

What you get

  • results — every match as {pointer, value} (pointer is a standard JSON Pointer like /store/book/0/title, ready for later writes/patches)
  • matchCount / returned — total matches vs returned (capped by maxResults, up to 10,000)
  • One record per expression — run several extractions over one document in a single run
  • Fail-soft: an invalid expression or an unloadable document never fails the run — it returns {ok: false, error} and is never charged.

Input

{
"paths": ["$.store.book[*].title", "$..price"],
"json": "{\"store\": {\"book\": [{\"title\": \"Moby Dick\", \"price\": 12.99}]}}"
}

Or fetch: { "path": "$..email", "url": "https://api.example.com/users.json" }. Pasted json takes priority over url.

Output (real run)

{
"path": "$.store.book[*].title",
"ok": true,
"matchCount": 2,
"returned": 2,
"results": [
{ "pointer": "/store/book/0/title", "value": "Sayings of the Century" },
{ "pointer": "/store/book/1/title", "value": "Moby Dick" }
]
}

Pricing

$0.0005 per expression evaluated. No start fee. Invalid expressions and unloadable documents are never charged.

No direct paid JSONPath incumbent was found on the store (2026-08-07 search across "jsonpath", "json extractor", "json query") — pricing is cost-plus: ~3-4x our measured run cost, which makes a 50-expression extraction $0.025.

Honest limits

  • Full JSONPath via jsonpath-plus 10.3 (pinned): recursive descent, wildcards, filters [?(@.price < 10)], slices, unions. Script-style eval expressions run in the library's safe mode — arbitrary JS in filters is intentionally not supported.
  • One document per run — multiple expressions share it. To query many documents, run once per document.
  • URL fetching sends no auth headers — public URLs only, or paste the JSON (pasted data never leaves the run).

FAQ

What JSONPath syntax is supported? The jsonpath-plus dialect: $..author, $.store.book[2], $..book[?(@.isbn)], $..book[-1:], unions like $..book[0,1], and ^ / ~ extensions for parent/property access.

Why do I get pointers, not just values? A JSON Pointer tells you exactly where each match lives — feed it to a patch operation, or use it to disambiguate identical values in different branches.

What happens on zero matches? An honest matchCount: 0 record with an empty results array — charged, because the query was evaluated and "nothing matches" is the answer.

Can I cap huge result sets? maxResults (default 1000, max 10,000) caps what is returned; matchCount still reports the true total.

Why did some rows come back ok: false? The expression failed to parse, or the document could not be loaded/parsed. Recorded with the exact error, never charged.

Use from code or AI agents

curl -s "https://api.apify.com/v2/acts/EliAI~jsonpath-extractor/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-X POST -H 'Content-Type: application/json' \
-d '{"path": "$..email", "url": "https://jsonplaceholder.typicode.com/users"}'

Agents: connect Apify MCP and call the EliAI/jsonpath-extractor tool.

  • Capability: evaluate JSONPath expressions against a JSON document (pasted or fetched), returning pointer+value matches
  • Required input: path or paths, plus json or url
  • Returns: one record per expression; results holds {pointer, value} pairs
  • Bounded: 50 expressions and maxResults values per run; failures isolate per expression
  • Side effects: none