Local Business Database API
Query the local business database via API. Access hundreds of thousands of businesses with emails, phone numbers, ratings, and location data. Requires $149/mo plan.
Included with $149/mo plan
GET /api/v1/database/local-businessesDatabase APIs are included with the $149/mo plan.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
page | number | Optional | Page number (default: 1)Default: 1Example: 1 |
limit | number | Optional | Results per page (max: 100)Default: 50Example: 100 |
category | string[] | Optional | Filter by business category (multiple allowed)Example: Restaurant |
country | string[] | Optional | Filter by country (multiple allowed)Example: US |
state | string | Optional | Filter by state (partial match)Example: Texas |
city | string | Optional | Filter by city (partial match)Example: Austin |
postalCode | string | Optional | Filter by postal/zip codeExample: 78701 |
minRating | number | Optional | Minimum Google rating (1-5)Example: 4 |
maxRating | number | Optional | Maximum Google rating (1-5)Example: 5 |
minReviews | number | Optional | Minimum number of reviewsExample: 50 |
maxReviews | number | Optional | Maximum number of reviewsExample: 1000 |
hasEmail | boolean | Optional | Only return businesses with email addressesDefault: falseExample: true |
hasPhone | boolean | Optional | Only return businesses with phone numbersDefault: falseExample: true |
hasWebsite | boolean | Optional | Only return businesses with websitesDefault: falseExample: true |
query | string | Optional | Full-text search across business name and descriptionExample: pizza |
excludeDelivered | boolean | Optional | Skip businesses you already have: anything this account got from this API before or unlocked in the dashboard. Use it for daily pulls so each run returns only new businesses. With this on, request page=1 every time (or use after), because the businesses you just received are skipped on the next call.Default: falseExample: true |
after | string | Optional | Cursor paging for large pulls: returns businesses after this id, in id order. Send after=0 on the first call, then send the next_after value from each response until it comes back null. Faster than page numbers deep into a big search. pagination.total is still the whole search.Example: 0 |
Examples
Daily pull of only new businesses (for n8n, Make, Zapier, or a cron job)
curl "https://app.scrapercity.com/api/v1/database/local-businesses?category=Dentist&country=US&hasEmail=true&excludeDelivered=true&limit=100" \ -H "Authorization: Bearer YOUR_API_KEY"
Page through a large search with a cursor
# First call: after=0. Then pass pagination.next_after from each response as after, until it is null. curl "https://app.scrapercity.com/api/v1/database/local-businesses?category=Dentist&country=US&hasEmail=true&after=0&limit=100" \ -H "Authorization: Bearer YOUR_API_KEY"
Find restaurants in Austin with 4+ stars
curl "https://app.scrapercity.com/api/v1/database/local-businesses?category=Restaurant&city=Austin&state=Texas&minRating=4&hasEmail=true&limit=100" \ -H "Authorization: Bearer YOUR_API_KEY"
Search for dentists with good reviews
curl "https://app.scrapercity.com/api/v1/database/local-businesses?category=Dentist&minReviews=50&minRating=4&country=US&limit=50" \ -H "Authorization: Bearer YOUR_API_KEY"
Use Cases
- •Build local business outreach lists for agencies
- •Power local SEO and marketing campaigns
- •Enrich your CRM with local business data
- •Find businesses by category and location at scale
Best Practices
- •Use category + location filters for targeted results
- •Rate limit: 100 businesses per request, 100,000 new businesses per day. Businesses you already have do not count again
- •Every business the API returns is saved to your account, so excludeDelivered=true can skip it next time. It also shows in your unlocked businesses in the dashboard
- •For big pulls use after + next_after (cursor paging) instead of high page numbers
- •Filter by hasEmail=true to only get businesses with contact info
- •Use minRating to target high-quality businesses
- •Requires $149/mo plan - upgrade at /dashboard/billing
- •Daily limit resets at midnight UTC
Every scrape returns a runId. Poll GET /api/v1/scrape/status/{runId} until it completes, then download via GET /api/downloads/{runId}?format=csv.
Authenticate every request with Authorization: Bearer YOUR_API_KEY. See the full API reference for authentication, rate limits and error codes.