[ docs ]Everything else
Explore
Reach data sources OUTSIDE the measured platform tools — the long tail the catalogue can fetch that no dedicated tool covers yet. Use it only after the platform tools have been ruled out: for anything about an Instagram, LinkedIn, YouTube, X, Reddit, TikTok, Facebook, Amazon, jobs, places or commerce entity, the dedicated tool answers better, cheaper and with provenance. What comes back here is the SOURCE'S OWN rows: raw, unverified, not mapped into a schema and not kept as measured data — evidence to interpret and cite, never a measurement. ops: sources (free — search what is reachable with `query` in plain words, naming the SITE or the DATA: "retweeters of a post", "quick commerce category listing"; returns the best few with a per-row price), schema (free — one source's live input fields, a sample input and a credit estimate; call it before every run), run (fetch: `source` from sources, `input` shaped by schema, `limit` rows — at most 100, default 10; billed per row the source returns, a run that returns nothing costs nothing). Ops are independent; sources and schema spend no credits.
POST https://api.zomler.com/api/v1/platforms/exploresources
not available right nowSearch what explore can reach. Free. `query` names the SITE or the DATA in plain words ("quick commerce categories", "who retweeted a post"), never an entity; returns the best-matching sources with what each returns and its price per row. Omit `query` to browse the whole index.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
query | string | — | ≤300 chars |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/explore \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "sources"
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/explore", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "sources"
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/explore",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "sources"
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])schema
not available right nowOne source's live input fields, a sample input and a credit estimate. Free. Call it before `run` so the input is built against the source's real, current contract and the cost is known before spending.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
source◆required | string | — | ≤120 chars |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/explore \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "schema",
"source": "example"
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/explore", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "schema",
"source": "example"
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/explore",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "schema",
"source": "example"
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])run
from 1 credits for 10Fetch rows from one source. `input` is forwarded to the source as `schema` described it; `limit` bounds the rows and the bill. Rows come back raw and unmapped. Billed per row the source actually returns; a run that finds nothing is free.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
source◆required | string | — | ≤120 chars |
input◆ | dict | {} | — |
limit | integer | 10 | 1-100 |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/explore \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "run",
"source": "example"
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/explore", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "run",
"source": "example"
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/explore",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "run",
"source": "example"
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])