Yelp Businesses & Reviews Scraper avatar

Yelp Businesses & Reviews Scraper

Pricing

$3.00 / 1,000 business returneds

Go to Apify Store
Yelp Businesses & Reviews Scraper

Yelp Businesses & Reviews Scraper

Scrape Yelp business listings and reviews. Search by term + location, or pass business URLs/slugs for full detail. Returns name, rating, review count, price, phone, address, geo and reviews. Real browser beats DataDome; never charges blocked or empty runs.

Pricing

$3.00 / 1,000 business returneds

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape Yelp business listings and full business detail (with reviews) using a real browser to get past Yelp's DataDome bot wall.

Input modes

  • Search / listings — set searchQueries (e.g. ["coffee in San Francisco"]), or the single query + location fields. Returns one row per business in the results list.
  • Detail + reviews — set businessUrls (https://www.yelp.com/biz/...) and/or businessSlugs (the part after /biz/). Returns the full business plus up to maxReviews reviews each.

You can combine both modes in one run. maxItems caps the total.

Example input

{
"searchQueries": ["coffee in San Francisco"],
"businessUrls": ["https://www.yelp.com/biz/blue-bottle-coffee-san-francisco-7"],
"maxItems": 50,
"maxReviews": 20,
"countryCode": "US"
}

Output

One dataset item per business:

{
"ok": true,
"name": "Blue Bottle Coffee",
"yelpUrl": "https://www.yelp.com/biz/blue-bottle-coffee-san-francisco-7",
"category": "Coffee & Tea",
"rating": 4.1,
"reviewCount": 2543,
"price": "$$",
"phone": "(510) 653-3394",
"address": "66 Mint St",
"city": "San Francisco",
"state": "CA",
"zip": "94103",
"lat": 37.782, "lng": -122.407,
"isAd": false,
"reviews": [
{ "author": "Jane D.", "rating": 5, "text": "Great espresso…", "date": "2025-12-01" }
]
}

reviews is only present for businesses scraped in detail mode with maxReviews > 0.

Nullable fields

Detail-mode rows (from businessUrls / businessSlugs) are the most complete. Search/listing rows can be sparse: when Yelp doesn't embed structured data for a result and the actor falls back to parsing the visible DOM, only name, yelpUrl and slug are guaranteed — rating, reviewCount, category, price, phone, address, city, state, zip, lat and lng may be null. Use detail mode for full records.

Pagination

Search mode paginates each query in batches of 10 (start=0,10,20,…), stops a query after 2 consecutive empty/duplicate pages, and never goes past start=240. maxItems caps the total across all inputs.

Proxy (required)

Yelp is behind DataDome. A RESIDENTIAL proxy is required — the default proxy configuration uses it. Set countryCode to the Yelp region you're targeting. On a block the actor rotates the whole browser + IP up to 7 times before giving up.

Billing

Charged per business returned (event business). Blocked, empty, or bad-input runs emit a diagnostic row (ok:false, errorCode — e.g. BLOCKED, NO_RESULTS, BAD_INPUT) and are never charged.

Troubleshooting

  • BAD_INPUT row, no results — you didn't provide any search input. Set searchQueries (e.g. ["coffee in San Francisco"]), or query + location, and/or businessUrls / businessSlugs.
  • BLOCKED row — Yelp's DataDome wall blocked every rotation. Retry (a fresh residential IP usually gets through) and confirm a RESIDENTIAL proxy plus the right countryCode are set.
  • Sparse search rows — see Nullable fields above; use detail mode for full records.