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

API documentation

One base URL, one header, 9 endpoints. Everything is a GET request and everything answers in the same shape.

base url · https://sensecollect.com

On this page
  • Quickstart
  • Authentication
  • Response schema
  • Endpoints
  • 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": 5,
  "credits_remaining": 295,
  "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 contact fields you need to actually reach them.

GET/v1/maps/searchfrom 5 credits

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.

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

GET/v1/maps/no-websitefrom 5 credits

The same search, pre-filtered to businesses with no website on file — the standard web-design lead list.

querystringrequired
What to search for.
locationstring
City, region, or country.
limitinteger
How many places to return. Defaults to 50, max 200.

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/reviewsfrom 12 credits

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/complaintsfrom 12 credits

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/hashtagfrom 15 credits

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/searchfrom 15 credits

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

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…

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

Credits are deducted when a run starts and refunded in full if it fails. Every response carries credits_used and credits_remaining, and GET /v1/account reports the balance for free.

See credit packsBuy credits
SenseCollect logoSenseCollect

The public web data API. One key, one unified schema, across every source we cover.

No subscriptionCredits never expireRefund on failed calls

API

DocumentationResponse schemaExplorerCatalog (JSON)Changelog

Sources

MapsAmazon reviewsTikTokAll sources

Company

PricingSolutionsToolsBlogAboutContact

Account

Get API keyLog inAPI keysCredits

© 2026 SenseCollect

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