← Health board

Restaurant, Cafe & Bar Scraper: Email, Phone & Address

Every restaurant, cafe, bar and bakery in a US state, county, city or ZIP code: phone, email, website, address, cuisine, hours, reservation and online-ordering platform, rating. From Google Maps and each place's own website.

100%golden-diff pass
Run it on Apify → verified nightly

Verification

100%golden-diff success
4canary runs
0days since last canary run

Output fields

Authoritative field set from the dataset schema.

FieldType
namestring|null
business_typestring|null
phonestring|null
emailstring|null
emailsarray|null
websitestring|null
online_orderingarray|null
reservation_platformstring|null
reservation_urlstring|null
addressstring|null
streetstring|null
citystring|null
countystring|null
statestring|null
zip_codestring|null
categoriesarray|null
ratingnumber|null
review_countinteger|null
opening_hoursobject|null
descriptionstring|null
badgesarray|null
latitudenumber|null
longitudenumber|null
place_idstring|null
google_maps_urlstring|null
source_urlstring|null
noticestring|null
notice_typestring|null

Sample row

{
  "name": "360 Gourmet Burritos",
  "business_type": "restaurant",
  "phone": "(925) 299-1270",
  "email": null,
  "emails": [],
  "website": "https://www.360burrito.com/",
  "online_ordering": [
    "ChowNow"
  ],
  "reservation_platform": null,
  "reservation_url": null,
  "address": "3655 Mount Diablo Blvd, Lafayette, CA 94549",
  "street": "3655 Mount Diablo Blvd",
  "city": "Lafayette",
  "county": "Contra Costa",
  "state": "CA",
  "zip_code": "94549",
  "categories": [
    "Mexican restaurant",
    "Burrito restaurant"
  ],
  "rating": 4.5,
  "review_count": 122,
  "opening_hours": {
    "Monday": "10:30 AM-7:30 PM",
    "Tuesday": "10:30 AM-7:30 PM",
    "Wednesday": "10:30 AM-7:30 PM",
    "Thursday": "10:30 AM-7:30 PM",
    "Friday": "10:30 AM-7:30 PM",
    "Saturday": "10:30 AM-6:30 PM",
    "Sunday": "Closed"
  },
  "description": null,
  "badges": [],
  "latitude": 37.8906477,
  "longitude": -122.1277167,
  "place_id": "ChIJ19DWkldihYARuoIvQ2paBt0",
  "google_maps_url": "https://www.google.com/maps/search/?api=1&query=360%20Gourmet%20Burritos&query_place_id=ChIJ19DWkldihYARuoIvQ2paBt0",
  "source_url": "https://www.google.com/maps/search/?api=1&query=360%20Gourmet%20Burritos&query_place_id=ChIJ19DWkldihYARuoIvQ2paBt0"
}

Inputs

FieldTypeReqDefaultDescription
state string no "CA" The US state to search. On its own it searches the whole state; add counties, cities or ZIP codes below to narrow it.
counties array no [] Only these counties of the state, e.g. Contra Costa or Harris. "County" is optional and spelling is forgiving. A name that is not in the state is skipped and a free row lists the real names.
cities array no ["Lafayette"] Only these cities, by their postal name, e.g. Lafayette or Houston. A big city is searched ZIP code by ZIP code, and a busy ZIP code is split into smaller map areas, so nothing is lost to Google's limit on one search.
zipCodes array no [] Only these 5-digit ZIP codes. Combined with counties and cities if you fill more than one.
placeType string no "restaurant" "All restaurants, cafes, bars & bakeries" returns every food and drink place. Pick one of the others to get only that kind.
includeEmails boolean no true On by default: visit each place's own website, return the email published there and the online-ordering platforms it links to. The email is charged separately, only for places where one is found. Turn it off for phone and address only.
maxResults integer no 1000 Cap on the number of places returned for the WHOLE run (not per city or county). A spend cap: the run stops once it has this many.
maxPagesPerSite integer no 6 How many pages of each place's website the email lookup reads: the homepage plus its contact and about pages.
proxyConfiguration object no {"useApifyProxy":true} Apify's datacenter proxy by default, which is what this actor was tested with.

Pricing

Pay per result (restaurant) — no charge for empty runs.
Example: 1000 restaurants at $0.003/result ≈ $3.00.

FAQ

What area can I search?

Any US state (plus DC). On its own, the state searches the whole state; add counties, cities or 5-digit ZIP codes to narrow it, and they combine. County names are forgiving ("Contra Costa" or "Contra Costa County"); a name that is not in the state is skipped, and a free row lists the real names.

Why ZIP code by ZIP code, and what is the map split?

One Google Maps search stops at about 160 places. The actor searches each ZIP code near its own centre and keeps only places whose address ZIP is in your area. Where a ZIP code's search still ends at Google's limit, the actor searches that ZIP code again in four smaller map squares, and splits again where needed. Measured in Manhattan's 10001 on 2026-10-30: one search found 61 restaurants in that ZIP code; the actor found 636 food and drink places there.

Which places are included?

With "All restaurants, cafes, bars & bakeries" (the default): every place whose main Google category is food or drink, from restaurants of every cuisine to coffee shops, bars, pubs, breweries, bakeries, dessert shops and fast food. Gas stations, hotels and grocery stores are left out even when they serve food, because Google files them under their main business. Pick "Cafes & coffee shops", "Bars & pubs", "Bakeries & desserts" or "Fast food" to get only that kind. Every row carries a business_type, so you can also filter an "All" export afterwards.

How does the email and ordering-platform lookup work?

Unless you switch "Look up each place's email" off, the actor reads the homepage and contact/about pages of each place's own website (up to 6 pages by default), returns the emails published there, and lists the ordering, delivery and POS platforms the pages link to or load (Toast, DoorDash, Uber Eats, Grubhub, ChowNow, Square, Clover, SpotOn and others). Platform and booking-site addresses are dropped. Chain locations often publish only the chain's head-office address, and the actor returns what the site publishes. Places whose website is a Facebook or Instagram page are skipped.

How many places have an email?

Fewer than have a phone. In Lafayette, CA (2026-10-30): 91 places, 86 with a phone, 74 with a website, 29 with an email found on their site, and 19 with an ordering platform.

How am I charged?

$0.003 per place returned. With the email lookup on (the default), another $0.002 per place where an email was found; no email found, no extra charge. Free rows (a refused search, an unknown county, input to fix) are never charged. Set "Maximum places" to cap a run's spend.

How long does a run take?

Measured on 2026-10-30: Lafayette, CA (1 ZIP code, 91 places) in about 80 seconds with the email lookup; Manhattan's 10001, the densest ZIP code we know of (636 places), in about 4 minutes of searching; all of Contra Costa County, CA (52 ZIP codes, 3,387 places) in about 21 minutes of searching, before the email lookup. A whole state runs for hours; set "Maximum places" or narrow the area, and raise the run timeout for a big area.

What if Google refuses a search?

Each search is retried on a fresh proxy address. If a ZIP code still fails, the places found elsewhere are delivered and a free row lists the ZIP codes to run again, so a refusal never reads as "no restaurants here".

Guides & use cases

Related actors