ScraperCity logo

Local Business Database API API Documentation

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 planGET /api/v1/database/local-businesses

Database APIs are included with the $149/mo plan.

Parameters

NameTypeRequiredDescription
pagenumberOptionalPage number (default: 1)Default: 1Example: 1
limitnumberOptionalResults per page (max: 100)Default: 50Example: 100
categorystring[]OptionalFilter by business category (multiple allowed)Example: Restaurant
countrystring[]OptionalFilter by country (multiple allowed)Example: US
statestringOptionalFilter by state (partial match)Example: Texas
citystringOptionalFilter by city (partial match)Example: Austin
postalCodestringOptionalFilter by postal/zip codeExample: 78701
minRatingnumberOptionalMinimum Google rating (1-5)Example: 4
maxRatingnumberOptionalMaximum Google rating (1-5)Example: 5
minReviewsnumberOptionalMinimum number of reviewsExample: 50
maxReviewsnumberOptionalMaximum number of reviewsExample: 1000
hasEmailbooleanOptionalOnly return businesses with email addressesDefault: falseExample: true
hasPhonebooleanOptionalOnly return businesses with phone numbersDefault: falseExample: true
hasWebsitebooleanOptionalOnly return businesses with websitesDefault: falseExample: true
querystringOptionalFull-text search across business name and descriptionExample: pizza
excludeDeliveredbooleanOptionalSkip 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
afterstringOptionalCursor 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.