{"success":true,"request_id":"req_b59b27ae2a874a2bbd864046","count":16,"data":[{"id":"google_maps","name":"Maps","description":"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.","endpoints":[{"method":"GET","path":"/v1/maps/search","name":"Search places","summary":"Businesses matching a query and location, with phone, email, website, rating, and review count.","credits_per_result":8,"credits_example_call":400,"record_type":"place","params":[{"name":"query","type":"string","required":true,"description":"What to search for.","example":"dentists"},{"name":"location","type":"string","description":"City, region, or country. Defaults to United States.","example":"Berlin"},{"name":"limit","type":"integer","description":"How many places to return. Defaults to 50, max 200.","example":"50"},{"name":"enrich","type":"boolean","description":"Resolve contact details and social profiles. Costs more credits per row. Defaults to true.","example":"true"},{"name":"verify","type":"boolean","description":"Check every contact is deliverable before returning it. Rows without one are dropped and cost nothing. 45 credits per verified row.","example":"true"},{"name":"personal_only","type":"boolean","description":"With verify=true, keep only named-person addresses and drop shared inboxes like info@.","example":"true"},{"name":"skip_claimed","type":"boolean","description":"Leave out leads already claimed on this account. Defaults to true.","example":"true"}],"example":"/v1/maps/search?query=dentists&location=Berlin&limit=50&verify=true"},{"method":"GET","path":"/v1/maps/no-website","name":"Places without a website","summary":"The same search, pre-filtered to businesses with no website on file — the standard web-design lead list. The filter runs after collection, so the charge is for the places the search found.","credits_per_result":8,"credits_example_call":400,"record_type":"place","params":[{"name":"query","type":"string","required":true,"description":"What to search for.","example":"restaurants"},{"name":"location","type":"string","description":"City, region, or country.","example":"Hamburg"},{"name":"limit","type":"integer","description":"How many places to return. Defaults to 50, max 200.","example":"50"},{"name":"verify","type":"boolean","description":"Only return businesses with a deliverable contact. 45 credits per verified row, nothing for the rest.","example":"true"}],"example":"/v1/maps/no-website?query=restaurants&location=Hamburg"}]},{"id":"amazon_reviews","name":"Amazon","description":"Reviews for any public ASIN as flat records — rating, text, date, reviewer — ready for sentiment work or objection mining.","endpoints":[{"method":"GET","path":"/v1/amazon/reviews","name":"Product reviews","summary":"Reviews for one or more ASINs in the unified record shape.","credits_per_result":3,"credits_example_call":30,"record_type":"review","params":[{"name":"asin","type":"string","required":true,"description":"One ASIN, or several separated by commas.","example":"B09G9FPHY6"},{"name":"limit","type":"integer","description":"How many reviews per product to return. Defaults to 10, max 100.","example":"10"}],"example":"/v1/amazon/reviews?asin=B09G9FPHY6&limit=25"},{"method":"GET","path":"/v1/amazon/complaints","name":"Negative reviews only","summary":"The same run, filtered server-side to 1- and 2-star reviews so you get the complaints without paging the rest.","credits_per_result":3,"credits_example_call":75,"record_type":"review","params":[{"name":"asin","type":"string","required":true,"description":"One ASIN, or several separated by commas.","example":"B09G9FPHY6"},{"name":"limit","type":"integer","description":"How many reviews per product to return. Defaults to 25, max 100.","example":"25"}],"example":"/v1/amazon/complaints?asin=B09G9FPHY6"}]},{"id":"tiktok","name":"TikTok","description":"Posts for a hashtag or topic with creator, caption, and engagement counts — the raw material for trend and creator research.","endpoints":[{"method":"GET","path":"/v1/tiktok/hashtag","name":"Posts by hashtag","summary":"Posts for one or more hashtags, with plays, likes, comments, and shares.","credits_per_result":2,"credits_example_call":200,"record_type":"post","params":[{"name":"hashtag","type":"string","required":true,"description":"One hashtag, or several separated by commas.","example":"fitnesscoach"},{"name":"limit","type":"integer","description":"How many posts to return. Defaults to 100, max 500.","example":"100"}],"example":"/v1/tiktok/hashtag?hashtag=fitnesscoach&limit=100"},{"method":"GET","path":"/v1/tiktok/search","name":"Posts by topic","summary":"Give it a plain-language topic; SenseCollect resolves the hashtags and returns the posts.","credits_per_result":2,"credits_example_call":200,"record_type":"post","params":[{"name":"query","type":"string","required":true,"description":"A topic in plain language.","example":"ai fitness coaches"},{"name":"limit","type":"integer","description":"How many posts to return. Defaults to 100, max 500.","example":"100"}],"example":"/v1/tiktok/search?query=ai%20fitness%20coaches"}]},{"id":"meta","name":"Watches","description":"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.","endpoints":[{"method":"GET","path":"/v1/watches","name":"List watches","summary":"Every watch on the account, with its cadence and last run.","credits_per_result":0,"credits_example_call":0,"record_type":"meta","params":[],"example":"/v1/watches"},{"method":"POST","path":"/v1/watches/create","name":"Create a watch","summary":"Start watching a niche and city. The first run records a baseline; changes are reported from the second run onward.","credits_per_result":0,"credits_example_call":0,"record_type":"meta","params":[{"name":"query","type":"string","required":true,"description":"What to watch for.","example":"dentists"},{"name":"location","type":"string","description":"City, region, or country.","example":"Berlin"},{"name":"cadence_hours","type":"integer","description":"How often to re-run. Defaults to 24, max 720.","example":"24"}],"example":"/v1/watches/create?query=dentists&location=Berlin"},{"method":"GET","path":"/v1/watches/changes","name":"What changed","summary":"Changes detected across your watches: added, removed, website_added, website_removed, rating_dropped.","credits_per_result":0,"credits_example_call":0,"record_type":"meta","params":[{"name":"watch_id","type":"string","description":"Limit to one watch."},{"name":"since","type":"string","description":"ISO timestamp; only changes detected after it.","example":"2026-07-01T00:00:00Z"},{"name":"limit","type":"integer","description":"How many changes to return. Defaults to 100, max 500.","example":"100"}],"example":"/v1/watches/changes?since=2026-07-01T00:00:00Z"},{"method":"POST","path":"/v1/watches/delete","name":"Delete a watch","summary":"Stops the watch and drops its history.","credits_per_result":0,"credits_example_call":0,"record_type":"meta","params":[{"name":"watch_id","type":"string","required":true,"description":"The watch to delete."}],"example":"/v1/watches/delete?watch_id=6c1f…"}]},{"id":"meta","name":"Claimed leads","description":"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.","endpoints":[{"method":"POST","path":"/v1/leads/claim","name":"Claim leads","summary":"Mark records as yours. Future searches skip them, and they are never charged again.","credits_per_result":0,"credits_example_call":0,"record_type":"meta","params":[{"name":"record_key","type":"string","required":true,"description":"The `id` of a record, or several separated by commas.","example":"ChIJ0xT4…"},{"name":"note","type":"string","description":"Why it was claimed, for your own reference.","example":"sent to client"}],"example":"/v1/leads/claim?record_key=ChIJ0xT4…"},{"method":"GET","path":"/v1/leads/claimed","name":"List claimed leads","summary":"Everything currently suppressed on the account.","credits_per_result":0,"credits_example_call":0,"record_type":"meta","params":[{"name":"limit","type":"integer","description":"How many records to return. Defaults to 500, max 1000.","example":"500"}],"example":"/v1/leads/claimed"},{"method":"POST","path":"/v1/leads/release","name":"Release leads","summary":"Puts records back into circulation for this account.","credits_per_result":0,"credits_example_call":0,"record_type":"meta","params":[{"name":"record_key","type":"string","required":true,"description":"One record id, or several separated by commas."}],"example":"/v1/leads/release?record_key=ChIJ0xT4…"}]},{"id":"meta","name":"Account","description":"Balance, catalog, and job polling. These never cost credits, so you can wire up monitoring without paying for it.","endpoints":[{"method":"GET","path":"/v1/account","name":"Account balance","summary":"Remaining credits and the email the key belongs to.","credits_per_result":0,"credits_example_call":0,"record_type":"meta","params":[],"example":"/v1/account"},{"method":"GET","path":"/v1/sources","name":"Source catalog","summary":"Machine-readable list of every source, endpoint, parameter, and price.","credits_per_result":0,"credits_example_call":0,"record_type":"meta","params":[],"example":"/v1/sources"},{"method":"GET","path":"/v1/jobs/{id}","name":"Poll a run","summary":"Fetch a run started with async=true, or one that outlived the synchronous request budget.","credits_per_result":0,"credits_example_call":0,"record_type":"meta","params":[{"name":"id","type":"string","required":true,"description":"The job id returned by the original call."}],"example":"/v1/jobs/6c1f…"}]}]}