2,500 free credits — no credit card required. Start building

SenseCollect logoSenseCollect
  • Sources
  • Solutions
  • Pricing
  • Tools
  • Blog
  • About
DocsGet API key
SourcesSolutionsPricingToolsBlogAboutDocs
Get API keyLog in
Reference

API documentation

One base URL, one header, 16 endpoints. Reads are GETs, the few actions are POSTs, and everything answers in the same shape.

base url · https://sensecollect.com

On this page
  • Quickstart
  • Authentication
  • Response schema
  • Endpoints
  • Verified contacts
  • Watches
  • Claimed leads
  • MCP server
  • Async runs
  • Errors
  • Credits

Quickstart

Create a key in the dashboard, then send it as x-api-key. Nothing else is required — no SDK, no OAuth, no per-source credentials.

curl "https://sensecollect.com/v1/maps/search?query=dentists&location=Berlin&limit=25" \  -H "x-api-key: $SENSECOLLECT_KEY"
Create an API key

Authentication

Keys look like sc_live_… and are shown once at creation. Send them in the x-api-key header, or as a bearer token if that fits your client better. Revoking a key in the dashboard takes effect on the next call.

header
x-api-key: sc_live_YOUR_KEY
bearer alternative
Authorization: Bearer sc_live_YOUR_KEY

Response schema

Every data endpoint answers with the same envelope, and every item in data uses the same record shape regardless of source. Fields a source cannot fill come back empty rather than missing, so your parser never branches on source.

envelope
{  "success": true,  "request_id": "req_9f2a…",  "status": "completed",  "source": "google_maps",  "endpoint": "/v1/maps/search",  "job_id": "6c1f…",  "credits_used": 400,  "credits_remaining": 9600,  "count": 50,  "data": [ … ]}
record
{  "id": "ChIJ0xT4…",  "type": "place" | "review" | "post",  "source": "google_maps" | "amazon_reviews" | "tiktok",  "title": "Mitte Dental Studio",  "url": "https://maps.google.com/…",  "content": "Dentist",  "published_at": "2026-05-02T09:14:00.000Z" | null,  "author":   { "name": "", "handle": "", "url": "" },  "contact":  { "phone": "", "email": "", "website": "" },  "location": { "address": "" },  "metrics":  { "rating": 4.6, "reviews": 42 },  "raw":      { … original source fields … }}

Endpoints

The same catalog is available as JSON at GET /v1/sources, with no key required.

Maps

Every business a map search returns for a niche and place, enriched with the phone, email, and website you need to actually reach them. This is the source most SenseCollect accounts are here for.

GET/v1/maps/search17 credits per row

Businesses matching a query and location, with phone, email, website, rating, and review count.

querystringrequired
What to search for.
locationstring
City, region, or country. Defaults to United States.
limitinteger
How many places to return. Defaults to 50, max 200.
enrichboolean
Resolve contact details and social profiles. Costs more credits per row. Defaults to true.
verifyboolean
Check every contact is deliverable before returning it. Rows without one are dropped and cost nothing. 45 credits per verified row.
personal_onlyboolean
With verify=true, keep only named-person addresses and drop shared inboxes like info@.
skip_claimedboolean
Leave out leads already claimed on this account. Defaults to true.

https://sensecollect.com/v1/maps/search?query=dentists&location=Berlin&limit=50&verify=true

GET/v1/maps/no-website19 credits per row

The same search, pre-filtered to businesses with no website on file — the standard web-design lead list. The filter runs at the source, so businesses that have a website are never collected and never charged for.

querystringrequired
What to search for.
locationstring
City, region, or country.
limitinteger
How many places to return. Defaults to 50, max 200.
verifyboolean
Only return businesses with a deliverable contact. 45 credits per verified row, nothing for the rest.

https://sensecollect.com/v1/maps/no-website?query=restaurants&location=Hamburg

Amazon

Reviews for any public ASIN as flat records — rating, text, date, reviewer — ready for sentiment work or objection mining.

GET/v1/amazon/reviews7 credits per row

Reviews for one or more ASINs in the unified record shape.

asinstringrequired
One ASIN, or several separated by commas.
limitinteger
How many reviews per product to return. Defaults to 10, max 100.

https://sensecollect.com/v1/amazon/reviews?asin=B09G9FPHY6&limit=25

GET/v1/amazon/complaints7 credits per row

The same run, filtered server-side to 1- and 2-star reviews so you get the complaints without paging the rest.

asinstringrequired
One ASIN, or several separated by commas.
limitinteger
How many reviews per product to return. Defaults to 25, max 100.

https://sensecollect.com/v1/amazon/complaints?asin=B09G9FPHY6

TikTok

Posts for a hashtag or topic with creator, caption, and engagement counts — the raw material for trend and creator research.

GET/v1/tiktok/hashtag10 credits per row

Posts for one or more hashtags, with plays, likes, comments, and shares.

hashtagstringrequired
One hashtag, or several separated by commas.
limitinteger
How many posts to return. Defaults to 100, max 500.

https://sensecollect.com/v1/tiktok/hashtag?hashtag=fitnesscoach&limit=100

GET/v1/tiktok/search10 credits per row

Give it a plain-language topic; SenseCollect resolves the hashtags and returns the posts.

querystringrequired
A topic in plain language.
limitinteger
How many posts to return. Defaults to 100, max 500.

https://sensecollect.com/v1/tiktok/search?query=ai%20fitness%20coaches

Watches

A watch re-runs one search on a cadence and reports only what moved — new businesses, a site that disappeared, a rating that dropped. Being first to a trigger is worth more than the row, so watch runs cost no credits; you pay only when you pull the leads behind them.

GET/v1/watchesfree

Every watch on the account, with its cadence and last run.

https://sensecollect.com/v1/watches

POST/v1/watches/createfree

Start watching a niche and city. The first run records a baseline; changes are reported from the second run onward.

querystringrequired
What to watch for.
locationstring
City, region, or country.
cadence_hoursinteger
How often to re-run. Defaults to 24, max 720.

https://sensecollect.com/v1/watches/create?query=dentists&location=Berlin

GET/v1/watches/changesfree

Changes detected across your watches: added, removed, website_added, website_removed, rating_dropped.

watch_idstring
Limit to one watch.
sincestring
ISO timestamp; only changes detected after it.
limitinteger
How many changes to return. Defaults to 100, max 500.

https://sensecollect.com/v1/watches/changes?since=2026-07-01T00:00:00Z

POST/v1/watches/deletefree

Stops the watch and drops its history.

watch_idstringrequired
The watch to delete.

https://sensecollect.com/v1/watches/delete?watch_id=6c1f…

Claimed leads

Claim a lead and it disappears from future searches on the account — not filtered out after you have paid for it, but excluded before it is charged.

POST/v1/leads/claimfree

Mark records as yours. Future searches skip them, and they are never charged again.

record_keystringrequired
The `id` of a record, or several separated by commas.
notestring
Why it was claimed, for your own reference.

https://sensecollect.com/v1/leads/claim?record_key=ChIJ0xT4…

GET/v1/leads/claimedfree

Everything currently suppressed on the account.

limitinteger
How many records to return. Defaults to 500, max 1000.

https://sensecollect.com/v1/leads/claimed

POST/v1/leads/releasefree

Puts records back into circulation for this account.

record_keystringrequired
One record id, or several separated by commas.

https://sensecollect.com/v1/leads/release?record_key=ChIJ0xT4…

Account

Balance, catalog, and job polling. These never cost credits, so you can wire up monitoring without paying for it.

GET/v1/accountfree

Remaining credits and the email the key belongs to.

https://sensecollect.com/v1/account

GET/v1/sourcesfree

Machine-readable list of every source, endpoint, parameter, and price.

https://sensecollect.com/v1/sources

GET/v1/jobs/{id}free

Fetch a run started with async=true, or one that outlived the synchronous request budget.

idstringrequired
The job id returned by the original call.

https://sensecollect.com/v1/jobs/6c1f…

Verified contacts

A listing is not a lead. Add verify=true to a Maps search and every address is checked for syntax, a disposable domain, and a live mail server before the row comes back. Rows without a deliverable contact are dropped — and they are not charged for. A pull where nothing verifies costs nothing at all.

Add personal_only=true to drop shared inboxes like info@ and keep only addresses that reach a named person. Verified rows cost 45 credits each and carry a verification block explaining the verdict.

verified pull
curl "https://sensecollect.com/v1/maps/search?query=dentists&location=Berlin&limit=50&verify=true&personal_only=true" \  -H "x-api-key: $SENSECOLLECT_KEY"
what comes back
{  "verified": true,  "rows_collected": 50,  "rows_billable": 31,  "credits_used": 1395,  "data": [    {      "title": "Mitte Dental Studio",      "contact": { "email": "m.schneider@mitte-dental.de", … },      "verification": {        "status": "deliverable",        "kind": "personal",        "billable": true      }    }  ]}

Watches

A watch re-runs one search on a cadence and tells you only what moved: a business that appeared, one whose website went away, one whose rating slipped. Being first to a trigger is the whole point, so watches and their change feed are free — you pay when you pull the leads behind them.

The first run records a baseline rather than reporting every existing business as new. Changes appear from the second run onward.

create a watch
curl -X POST "https://sensecollect.com/v1/watches/create?query=restaurants&location=Hamburg&cadence_hours=24" \  -H "x-api-key: $SENSECOLLECT_KEY"
what moved
curl "https://sensecollect.com/v1/watches/changes?since=2026-07-01T00:00:00Z" \  -H "x-api-key: $SENSECOLLECT_KEY"# types: added · removed · website_added · website_removed · rating_dropped

Claimed leads

Claim a lead once you have worked it and it drops out of later searches on the account — excluded before it is charged, not filtered out after you have paid for it. Two campaigns on the same account will not contact the same business, and you never buy the same row twice.

claim
curl -X POST "https://sensecollect.com/v1/leads/claim?record_key=ChIJ0xT4…&note=sent%20to%20client" \  -H "x-api-key: $SENSECOLLECT_KEY"
opt out of the exclusion
# Suppression is on by default. To see claimed leads anyway:GET /v1/maps/search?query=dentists&location=Berlin&skip_claimed=false

MCP server

Every data endpoint is also an MCP tool at /v1/mcp, so an agent can call the sources directly with no glue code. It is the same key, the same pricing, and the same records — the MCP server dispatches to the same handlers as the HTTP API. Point any MCP client at it:

mcp client config
{  "mcpServers": {    "sensecollect": {      "type": "http",      "url": "https://sensecollect.com/v1/mcp",      "headers": { "x-api-key": "sc_live_YOUR_KEY" }    }  }}

The handshake and tools/list answer without a key, so you can wire a client up and inspect the tools before pasting one in. Tool calls need the key. Because billing is per row, an agent that searches and finds nothing is charged nothing — and account_balance is free to call, so a long-running agent can watch its own budget.

tools
maps_search          places matching a query and locationmaps_no_website      the same search, only businesses with no siteamazon_reviews       reviews for one or more ASINsamazon_complaints    the same run, 1- and 2-star onlytiktok_hashtag       posts for one or more hashtagstiktok_search        posts for a plain-language topicaccount_balance      remaining credits (free)get_job              poll a run that returned a job id (free)create_watch         monitor a niche and city (free)watch_changes        what moved since you last looked (free)list_watches         watches on the account (free)delete_watch         stop a watch (free)claim_leads          mark leads worked, so they never return (free)list_claimed_leads   everything currently suppressed (free)release_leads        put claimed leads back in circulation (free)

Async runs

Collection happens against the live source, so a large pull can take longer than one HTTP request. Pass async=true to get a job id immediately, then poll /v1/jobs/{id}. A synchronous call that outlives its request budget returns the same 202 body, so a single code path handles both.

start
curl "https://sensecollect.com/v1/tiktok/hashtag?hashtag=fyp&limit=500&async=true" \  -H "x-api-key: $SENSECOLLECT_KEY"
202 · then poll
{  "success": true,  "status": "running",  "job_id": "6c1f…",  "poll_url": "/v1/jobs/6c1f…",  "credits_used": 15}

Errors

Errors keep the envelope and add a machine-readable code. When a run fails upstream, the credits are already back on your account by the time you read the response.

codestatusmeaning
missing_api_key401No key on the request.
invalid_api_key401Unknown or revoked key.
invalid_request400A required parameter is missing or unusable.
insufficient_credits402The call costs more than the account has left.
not_found404No such run on this account.
upstream_failed502The source run failed. Credits refunded.
internal_error500Something broke on our side.

Credits

Endpoints are priced per row, not per call. Credits are held against the limit you asked for when a run starts, then settled against the rows it actually collected — ask for 200 places in a town that only has 12 and you are charged for 12. A run that fails is refunded in full. The two filtered endpoints (/v1/maps/no-website and /v1/amazon/complaints) filter after collection, so they settle against the rows the run collected rather than the smaller set returned. Every response carries credits_used and credits_remaining, and GET /v1/account reports the balance for free.

See credit packsBuy credits
sensecollect/
SenseCollect logo

The local lead data API. One key, one unified schema, priced by the rows you get back.

No subscriptionCredits never expireNo per-call minimumRefund on failed runs

API

DocumentationResponse schemaMCP serverExplorerCatalog (JSON)Error codesChangelog

Sources

MapsAmazon reviewsTikTokAll sources

Guides

Leads by niche & cityLocal business leadsRestaurant leadsNo-website leadsExport Maps dataExport Amazon reviewsAuf Deutsch

Company

PricingComparisonsSolutionsToolsBlogAboutContact

Account

Get API keyLog inAPI keysCredits

© 2026 SenseCollect

Public data only. Review every response before you act on it.