Yelp Reviews Scraper avatar

Yelp Reviews Scraper

Pricing

from $2.00 / 1,000 result scrapeds

Go to Apify Store
Yelp Reviews Scraper

Yelp Reviews Scraper

Scrapes businesses and their reviews from Yelp search result pages (or a single business page). Extracts ratings, review text, reviewer profiles, and business metadata.

Pricing

from $2.00 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Reviewly

Reviewly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

πŸš€ Yelp Reviews Scraper β€” Extract Yelp Business Data & Reviews Without the Yelp API

Turn any Yelp search into a clean dataset of businesses and their full review history β€” ratings, review text, reviewer profiles, owner replies, phone numbers, websites, and opening hours β€” in just a few clicks.

  • ⭐ Scrape every review of a business, sorted newest-first, with full text and reviewer details
  • 🏒 Capture complete business profiles: address, phone, website, menu, hours, price range, amenities
  • πŸ›‘οΈ Anti-bot protection handled for you β€” the Actor clears Yelp's DataDome protection automatically
  • πŸ“… Incremental scraping with a date cutoff, perfect for daily or weekly review monitoring
  • πŸ“¦ Export to JSON, CSV, or Excel, or pull results straight into your app via the Apify API

No Yelp API key, no rate-limit paperwork, no browser extensions. Paste a Yelp URL, press Start, get data.


πŸ“Œ What This Actor Does

This Apify Actor is a Yelp scraper that collects businesses and their reviews from yelp.com. Give it either:

  • a Yelp search URL (e.g. "grill" in Los Angeles) β€” it discovers every business in the results and scrapes each one, or
  • a direct business page URL (https://www.yelp.com/biz/...) β€” it scrapes just that business.

For every business it returns one structured record combining the listing data, the full business profile, and as many reviews as you ask for.

Who it's for:

  • Marketers & agencies doing reputation management and review monitoring for clients
  • Sales teams building lead lists of local businesses with phone numbers and websites
  • Data analysts & researchers studying customer sentiment, pricing, or local markets
  • Developers who need reliable Yelp data feeds without maintaining their own web scraping infrastructure
  • Business owners tracking their own reviews and their competitors'

✨ Key Features

  • Full review extraction β€” review text, star rating, date, language, helpful votes, photos, and the owner's public reply
  • Rich reviewer profiles β€” name, location, Elite status, review count, friend count, and profile link for every reviewer
  • Complete business details β€” street address, phone, website, menu URL, opening hours, price range, categories, neighborhoods, amenities, claimed/closed status
  • Star-rating breakdown β€” review counts per star (1β˜…β€“5β˜…) for instant sentiment overviews
  • Search-to-dataset in one run β€” scrape all businesses from a search results page, not just one listing at a time
  • Date-based cutoff β€” stop at reviews older than a chosen date, so scheduled runs only fetch what's new
  • Automatic anti-bot bypass β€” clears Yelp's DataDome protection with a real fingerprint-hardened browser and rotates IPs when blocked; no configuration needed
  • Cost controls built in β€” cap total businesses, cap reviews per business, or skip reviews entirely for a fast listings-only run

🧠 Why This Actor Is Different

Most Yelp scrapers break the moment Yelp's bot protection (DataDome) challenges them, or silently return the block page instead of data. This Actor was built around that problem, not as an afterthought:

  • It earns real clearance β€” a hardened, human-like browser solves Yelp's device check, then a fast HTTP client reuses that trusted session for the actual scraping. You get browser-grade reliability at HTTP-client speed.
  • One clearance, many businesses β€” the trusted session is reused across the whole run instead of paying a slow browser check for every single page, so multi-business runs are dramatically faster.
  • Self-healing β€” if Yelp rejects a session mid-run, the Actor automatically rotates to a fresh IP and re-clears the protection (up to 8 attempts per item) before giving up.
  • Data from Yelp's own payloads β€” business info and reviews are parsed from Yelp's server-rendered JSON and internal GraphQL feed, not from fragile HTML selectors. That means fewer breakages and cleaner fields.
  • Honest failure reporting β€” when an attempt is blocked, the Actor stores a debug screenshot and the challenge details in the run's key-value store so issues are diagnosable, not mysterious.

βš™οΈ Input Configuration

FieldTypeDefaultDescription
startUrlsarrayβ€” (required)Yelp URLs to scrape. Accepts search pages (https://www.yelp.com/search?find_desc=...&find_loc=...) and business pages (https://www.yelp.com/biz/...).
maxItemsinteger1000Maximum businesses (dataset items) across all start URLs. 0 = no limit. Yelp caps public search at ~240 results per search URL.
fetchBusinessDetailsbooleantrueLoad each business's page for full details (address, phone, website, menu, hours, amenities…). Turn off to skip one page load per business.
scrapeReviewsbooleantruePaginate each business's review feed. Turn off for a fast, listings-only run.
maxReviewsinteger1000Maximum reviews per business. 0 = all reviews.
targetDatestringβ€”ISO date cutoff (e.g. 2025-01-01). Reviews are scraped newest-first and collection stops at the first review older than this date β€” ideal for incremental runs.
proxyobjectApify residential (US)Proxy settings. Keep residential proxies enabled β€” Yelp blocks datacenter IPs.

Example input

{
"startUrls": [
{ "url": "https://www.yelp.com/search?find_desc=grill&find_loc=Los+Angeles&sortby=review_count" }
],
"maxItems": 20,
"fetchBusinessDetails": true,
"scrapeReviews": true,
"maxReviews": 100,
"targetDate": "2025-01-01",
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Tips for best results

  • Sort your search on Yelp first (e.g. by review count or rating) and copy that URL β€” the Actor scrapes results in the order Yelp returns them.
  • A Yelp search maxes out around 240 results. Need more? Add several narrower searches (by neighborhood, category, or ZIP code) to startUrls in one run.
  • Scraping all reviews of a large restaurant can mean thousands of records. Set maxReviews (or targetDate) unless you truly need the full history.
  • For pure lead lists (name, phone, website, address), set scrapeReviews to false β€” you'll get the same business fields much faster and cheaper.

πŸ“€ Output Format

The Actor outputs one dataset record per business, with the reviews nested inside. Export as JSON, CSV, Excel, or fetch via API.

{
"encid": "k2dhvRV0gtPoDWLuH2OMTQ",
"alias": "aca-grill-los-angeles-2",
"name": "ACA Grill",
"businessUrl": "https://www.yelp.com/biz/aca-grill-los-angeles-2",
"rating": 4.5,
"reviewCount": 289,
"reviewCountsByRating": { "1": 4, "2": 3, "3": 12, "4": 61, "5": 209 },
"categories": ["Korean", "Barbeque"],
"priceRange": "$$",
"phone": "(213) 674-7708",
"website": "http://www.acagrill.com",
"menuUrl": "https://www.yelp.com/menu/aca-grill-los-angeles-2",
"address": {
"formatted": "961 S Vermont Ave Ste A Los Angeles, CA 90006",
"street": "961 S Vermont Ave",
"city": "Los Angeles",
"region": "CA",
"postalCode": "90006",
"country": "US"
},
"neighborhoods": ["Koreatown"],
"timezone": "America/Los_Angeles",
"isClosed": false,
"isClaimed": true,
"hours": [
{ "day": "Mon", "hours": ["11:00 AM - 10:00 PM"] }
],
"amenities": [
{ "name": "Takes Reservations", "active": true },
{ "name": "Offers Delivery", "active": true }
],
"reviews": [
{
"reviewId": "AbCdEfGh123",
"rating": 5,
"date": "2026-06-14 19:22:31",
"text": "The galbi was incredible and the service was fast...",
"language": "en",
"helpfulCount": 3,
"reviewer": {
"encid": "XyZ987",
"name": "Sarah K.",
"location": "Los Angeles, CA",
"profileUrl": "https://www.yelp.com/user_details?userid=XyZ987",
"profilePhoto": "https://s3-media0.fl.yelpcdn.com/...",
"reviewCount": 84,
"friendCount": 112,
"isElite": true
},
"photos": ["https://s3-media0.fl.yelpcdn.com/bphoto/..."],
"businessReply": {
"text": "Thank you so much, Sarah!",
"date": "2026-06-15 09:10:00"
}
}
]
}

Field reference

FieldMeaning
encid / aliasYelp's internal business ID and URL slug
rating / reviewCountOverall star rating and total review count
reviewCountsByRatingNumber of reviews per star level (1–5)
phone, website, menuUrl, hours, amenities, isClaimed, isClosedFull-profile fields (require fetchBusinessDetails: true)
reviews[]Scraped reviews, newest first (requires scrapeReviews: true)
reviews[].businessReplyThe owner's public response, if any
reviews[].reviewer.isEliteWhether the reviewer has Yelp Elite status

▢️ How to Use

  1. Open the Actor in the Apify Store and click Try for free β€” you'll need a free Apify account.
  2. Paste your Yelp URL(s) into Start URLs: a search results page, one or more business pages, or a mix.
  3. Set your limits β€” how many businesses (maxItems) and reviews per business (maxReviews) you want.
  4. Leave the proxy settings as they are (US residential) unless you have a reason to change them.
  5. Click Start. The first minute is spent clearing Yelp's bot protection β€” that's normal. Progress appears in the log.
  6. When the run finishes, open the Dataset tab to preview results and Export them as JSON, CSV, Excel, or HTML β€” or fetch them programmatically via the Apify API.

Common workflows

  • Weekly review monitoring: save a task with your business URLs and targetDate set to the last run's date, then schedule it weekly. Each run collects only new reviews.
  • Lead generation: use a search URL per city/category, scrapeReviews: false, and export CSV β€” you get names, phones, websites, and addresses ready for your CRM.
  • Competitor analysis: add your competitors' business URLs and compare reviewCountsByRating, amenities, and pricing side by side.

πŸ“ˆ Use Cases

  1. Reputation management β€” track every new review (and whether the owner replied) across all client locations, and alert on 1–2β˜… reviews the same day they appear.
  2. Local lead scraping β€” build targeted B2B lead lists of restaurants, salons, contractors, or any local niche, complete with phone numbers and websites for outreach.
  3. Market & sentiment research β€” analyze thousands of review texts to find what customers praise or complain about in a category before launching a product or opening a location.
  4. Competitive intelligence β€” monitor competitors' ratings trend, review velocity, price range, and amenities to position your own offering.
  5. AI & NLP datasets β€” collect clean, labeled review text (rating + text + date) for training sentiment models or powering RAG applications.

πŸ› οΈ Advanced Tips

  • Speed vs. depth: fetchBusinessDetails: false + scrapeReviews: false is the fastest mode (search listings only). Each enabled option adds requests per business.
  • Proxies: the default US residential Apify Proxy is the tested configuration. Datacenter proxies will be blocked by Yelp's protection β€” don't switch unless you know why.
  • Timeouts: clearing Yelp's bot protection takes ~1–2 minutes per fresh session. For runs with many businesses, keep the Actor's run timeout at 900 seconds or more; the Actor reuses a cleared session across businesses whenever possible, so later items are much faster than the first.
  • Scaling: for very large jobs, split cities/categories across multiple parallel runs rather than one giant run β€” you'll get results sooner and isolate any blocked session to a smaller batch.
  • Incremental pipelines: combine targetDate with Apify webhooks to push only fresh reviews into Slack, Google Sheets, or your database.

❓ FAQ / Troubleshooting

Does this Actor use the official Yelp API? No. It scrapes publicly visible pages, so you don't need a Yelp API key and you aren't bound by the API's narrow quotas (the official API returns only 3 review excerpts per business β€” this Actor can return them all).

Is scraping Yelp legal? The Actor only collects publicly available data β€” the same information any visitor sees. That said, how you use the data is your responsibility: consult your legal counsel, respect applicable privacy laws (GDPR/CCPA) when storing personal data such as reviewer names, and don't republish content in ways that violate copyright.

The run seems stuck at the start / "Launching (Firefox) to clear DataDome…" That's the anti-bot bypass working β€” it takes roughly 1–2 minutes. It's a one-time cost per session, not per page.

I got "DataDome blocked every IP" for an item. Yelp occasionally serves hard blocks to specific IPs. The Actor already rotated through 8 fresh IPs before reporting this. Simply re-run the Actor (or the failed URLs) β€” a new run draws new IPs. Make sure residential proxies are enabled; this error is near-certain with datacenter IPs.

Why do I get at most ~240 businesses per search? Yelp caps public search results at about 240 items regardless of the tool used. Split your search into narrower queries (neighborhoods, ZIP codes, subcategories) and add them all to startUrls.

Some businesses miss the phone/website/hours fields. Those fields come from the business's own page β€” make sure fetchBusinessDetails is true. If it is, the business may simply not publish that information.

Reviews stopped at an older date than I expected. Check targetDate β€” collection stops at the first review older than it (reviews are processed newest-first). Set it to empty to fetch the full history.

Can I get reviewer email addresses? No. Yelp does not publish reviewer emails, and this Actor only extracts data that is publicly displayed.


πŸ“ž Support

  • πŸ› Found a bug or a field that stopped parsing? Open an issue on the Actor's Issues tab in the Apify Console β€” please include the run ID.
  • πŸ’¬ Questions, feature requests, or custom scraping needs? Email the developer directly: me@ahmedhrid.com
  • πŸ“š New to Apify? Start with the Apify documentation to learn about scheduling, integrations, and the API.

If this Actor saves you time, a ⭐ rating in the Apify Store helps others find it β€” and tells us to keep improving it.