Yelp Scraper [Only $1.5💰] | Reviews | Business Data | Ratings avatar

Yelp Scraper [Only $1.5💰] | Reviews | Business Data | Ratings

Pricing

from $1.30 / 1,000 results

Go to Apify Store
Yelp Scraper [Only $1.5💰] | Reviews | Business Data | Ratings

Yelp Scraper [Only $1.5💰] | Reviews | Business Data | Ratings

Scrape Yelp business profiles and full reviews with ratings, dates, author details and reaction counts. Build lead lists, monitor reputation and run competitor analysis at scale, with no official API limits.

Pricing

from $1.30 / 1,000 results

Rating

0.0

(0)

Developer

Ahmed Jasarevic

Ahmed Jasarevic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Categories

Share

Yelp Scraper: Business Profiles And Full Review Data

Scrape Yelp business profiles and complete review feeds with no browser and no proxy. Get business name, rating, review count, categories, price range, city, today's hours and full review text with author details, dates and reaction counts. The official Yelp Fusion API caps reviews at three excerpts of about 160 characters; this actor returns the full review feed instead.

Main Use Cases

  • Local SEO and listing audits for agencies managing many client businesses
  • Reputation monitoring and rating tracking across multiple locations
  • Competitor analysis: benchmark ratings, review counts and categories in a market
  • Market research on rating distributions, category trends and price ranges
  • Building structured local business datasets for dashboards and analysis
  • Collecting full review text as input for sentiment analysis and NLP projects

How Yelp Scraper Works

This actor runs entirely over HTTP, with no browser and no proxy by default. It impersonates a real Chrome TLS/JA3 fingerprint to read Yelp's European storefronts, then pulls business profile and review data from Yelp's own internal GraphQL endpoint as clean structured JSON. That makes runs fast and cheap: roughly 0.05 to 0.1 compute units per 100 businesses with reviews.

Build Yelp Business And Review Datasets Without An Official API

Yelp's public API does not return full review text, and its reviews endpoint returns only up to three excerpts of about 160 characters each. This actor reads Yelp the same way the website does, but without a browser:

  1. Regional storefronts, not yelp.com. impit, a Rust-based HTTP client, fetches Yelp's European domains (yelp.de, yelp.fr, yelp.ie, yelp.dk, yelp.se, yelp.co.uk) with a real Chrome fingerprint. Those storefronts serve the same global business data to datacenter IPs that yelp.com itself gates with DataDome.
  2. Discovery. Search URLs are read from the /search page's embedded react-root-props blob (business id and alias per result). Business URLs and aliases are resolved to their encoded id through the <meta name="yelp-biz-id"> tag on the /biz/<alias> page. Encoded business ids are used directly.
  3. Profiles and reviews come from POST https://www.yelp.com/gql/batch using Yelp's persisted-query ids for GetBizHeaderData (name, rating, review count, categories, price, city, today's hours) and GetBusinessReviewFeed (paginated with a base64 offset cursor). There is no character limit and no three-review cap.
  4. If Yelp rotates a persisted-query id, set YELP_REVIEW_DOCUMENT_ID or YELP_PROFILE_DOCUMENT_ID to the new value (grab it from DevTools: Network, filter batch, then <operationName>, then extensions.documentId).

Three input modes are supported:

  1. Direct business URLs: https://www.yelp.com/biz/...
  2. Search result pages: https://www.yelp.com/search?find_desc=...&find_loc=..., which auto-discover every business on the page
  3. Encoded business ids: the fastest path, skips the page request and goes straight to GraphQL

Extract Yelp Business Profiles For Market Research

Each business becomes one record with name, star rating (1.0 to 5.0), total review count, categories, price range, city/region, today's hours, Yelp id, encoded business id, image and scrape timestamp. Because there is no browser and no proxy, a run of a few hundred businesses finishes in seconds to a couple of minutes depending on maxConcurrency and how many reviews are requested.

Fields and their source:

FieldSourceNotes
nameGraphQL GetBizHeaderDataOfficial business name
ratingGraphQL GetBizHeaderDataStar rating (1.0 - 5.0)
reviewCountGraphQL GetBizHeaderDataTotal number of reviews
categoriesGraphQL GetBizHeaderDataBusiness categories
priceRangeGraphQL GetBizHeaderDataPrice level ($ to $$$$)
addressGraphQL GetBizHeaderDataCity and state/region
hoursGraphQL GetBizHeaderDataCurrent day's opening hours
url, yelpId, encBizId, imageUrlPage / GraphQLIdentifiers and image
reviewsGraphQL GetBusinessReviewFeedFull review feed, paginated, no truncation

Input Parameters

FieldTypeRequiredDefaultNotes
startUrlsarrayYesprefill: a coffee search in San FranciscoBusiness URLs, search result URLs, bare aliases or 22-char encoded business ids. Encoded ids skip the page fetch entirely and are the fastest input
maxBusinessesintegerNo50Maximum business listings to scrape (1 to 1000)
maxReviewsPerBusinessintegerNo10Maximum full reviews per business (0 to 500). Set 0 to skip reviews
includeReviewsbooleanNotrueFetch full review text, rating, date, author info and reaction counts
sortBystringNoDATE_DESCReview order: DATE_DESC, RELEVANCE_DESC or ELITES_DESC
maxConcurrencyintegerNo5Businesses processed in parallel (1 to 20). Higher is faster
proxyConfigurationobjectNo{ "useApifyProxy": false }Optional. Data comes from Yelp's unblocked storefronts and GraphQL, so no proxy is needed. Enable a proxy only if you hit rate limits

Output Fields

The actor pushes two record types. Businesses go to the default dataset, reviews go to a separate reviews dataset.

Business record fields: _type (business), url, name, rating, reviewCount, categories (array), priceRange, address, phone, website, hours (object), latitude, longitude, yelpId, encBizId, imageUrl, scrapedAt.

Review record fields: _type (review), businessUrl, businessName, reviewId, rating, text (full review text), date, authorName, authorUrl, authorPhotoUrl, usefulCount, funnyCount, coolCount.

Note on missing fields: the internal GraphQL profile endpoint exposes name, rating, review count, categories, price range, city/region and hours. It does not expose phone, full street address, website or exact GPS coordinates, so phone, website, latitude and longitude are usually null unless the data is present on the fetched business page.

Example Input And Output

Example input:

{
"startUrls": [
{ "url": "https://www.yelp.com/search?find_desc=coffee&find_loc=San+Francisco%2C+CA" }
],
"maxBusinesses": 20,
"maxReviewsPerBusiness": 20,
"includeReviews": true,
"sortBy": "DATE_DESC",
"maxConcurrency": 5
}

Example business record (default dataset):

{
"_type": "business",
"url": "https://www.yelp.com/biz/the-coffee-place-san-francisco",
"name": "The Coffee Place",
"rating": 4.5,
"reviewCount": 234,
"categories": ["Coffee & Tea", "Breakfast & Brunch"],
"priceRange": "$$",
"address": "San Francisco, CA",
"phone": null,
"website": null,
"hours": { "today": "7:00 AM - 6:00 PM" },
"latitude": null,
"longitude": null,
"yelpId": "the-coffee-place-san-francisco",
"encBizId": "T20VEwi7AzKbY2TuVEt_ig",
"imageUrl": "https://s3-media0.fl.yelpcdn.com/photo/example/o.jpg",
"scrapedAt": "2026-08-27T10:00:00.000Z"
}

Example review record (reviews dataset):

{
"_type": "review",
"businessUrl": "https://www.yelp.com/biz/the-coffee-place-san-francisco",
"businessName": "The Coffee Place",
"reviewId": "pJ5tnzX01EC2n6wH7ru0Bw",
"rating": 5,
"text": "Amazing coffee and the baristas are incredibly friendly. The breakfast burrito is worth the trip alone.",
"date": "2026-08-15T10:00:00-07:00",
"authorName": "John D.",
"authorUrl": "https://www.yelp.com/user_details?userid=x5HkOYmLXJDjHDx6G8sajw",
"authorPhotoUrl": "https://s3-media0.fl.yelpcdn.com/photo/example/180s.jpg",
"usefulCount": 12,
"funnyCount": 2,
"coolCount": 5
}

You can download both datasets as JSON, CSV, Excel or HTML.

Integrations & Automation

Results are available through the Apify API and can be connected to:

  • Apify API: run the actor and read the default (businesses) and reviews datasets programmatically
  • Webhooks: trigger downstream systems when a run finishes
  • Zapier and Make: push new business and review rows into Sheets, Airtable, a CRM or a dashboard

For reputation and rating monitoring, schedule a recurring run (for example daily or weekly) with the same startUrls so you capture new reviews and rating changes over time. Recurring runs are the intended pattern for monitoring use cases. Set includeReviews to false or maxReviewsPerBusiness to 0 for cheaper, business-only refreshes.

Verified related actors on the Apify Store that pair well with this one:

FAQ

Is there an official Yelp API?

Yes. The Yelp Fusion / Places API has a reviews endpoint, but it returns only up to three review excerpts of about 160 characters each, and the Yelp documentation states the Places API does not return full review text. Full review access requires paid plans, from about $229 per month up to about $643 per month, plus per-1,000-call overages. This actor returns the full review feed with no three-review cap.

How many reviews can I get for a business?

There is no three-review cap. Set maxReviewsPerBusiness to any value up to 500 and the actor paginates Yelp's review feed until it reaches that number. Set maxReviewsPerBusiness to 0 to skip reviews entirely.

What are the alternatives to Yelp Scraper or the Yelp API?

Alternatives include the official Yelp Fusion / Places API, Yelp Insights data licensing, the academic Yelp Open Dataset (historical, not live), SerpApi's Yelp Reviews API, and other Yelp actors on the Apify Store. This actor focuses on live business profiles plus full review text with no browser and no proxy.

Do I need a proxy or a browser to scrape Yelp?

No by default. The actor reads Yelp's European storefronts from a datacenter IP using a Chrome TLS/JA3 fingerprint, so there is no browser and no proxy requirement. You can enable a proxy through proxyConfiguration if you hit rate limits.

Can I scrape Yelp search results instead of individual businesses?

Yes. Pass a search URL such as https://www.yelp.com/search?find_desc=pizza&find_loc=New+York and the actor discovers every business on the page, up to maxBusinesses.

What Yelp data is not available?

Phone, full street address, website and exact GPS coordinates are not exposed by the internal endpoints this actor uses, so those fields are usually null. Profiles include name, rating, review count, categories, price range, city/region and hours; reviews include full text, rating, date, author details and reaction counts.

Is there a free tier?

Non-paying Apify users are capped at 5 businesses per run. Paid users are not capped by that limit and are billed per event (see the pricing).

SEO Keywords

yelp scraper, yelp reviews scraper, scrape yelp reviews, yelp business scraper, yelp scraper api, yelp api alternative, yelp fusion api alternative, yelp places api, yelp reviews api, yelp reviews without api, yelp dataset, yelp reputation monitoring, yelp rating monitoring, yelp competitor analysis, yelp review sentiment analysis, yelp lead generation, yelp data extraction, extract yelp reviews, yelp business data, yelp business profiles, yelp search scraper, yelp full review text api, local business data, local seo yelp data

For AI Agents & LLM Apps

Purpose: return Yelp business profiles (default dataset) and full reviews (separate reviews dataset) as structured JSON, given Yelp URLs, search URLs, aliases or 22-char encoded business ids.

Minimal working input:

{ "startUrls": ["https://www.yelp.com/biz/the-coffee-place-san-francisco"] }

Variant inputs (distinct modes):

{ "startUrls": ["T20VEwi7AzKbY2TuVEt_ig"], "includeReviews": false }
{ "startUrls": ["https://www.yelp.com/search?find_desc=pizza&find_loc=New+York"], "maxBusinesses": 30, "maxReviewsPerBusiness": 50 }

Output fields:

  • Businesses (default dataset): _type, url, name, rating, reviewCount, categories, priceRange, address, phone, website, hours, latitude, longitude, yelpId, encBizId, imageUrl, scrapedAt
  • Reviews (reviews dataset): _type, businessUrl, businessName, reviewId, rating, text, date, authorName, authorUrl, authorPhotoUrl, usefulCount, funnyCount, coolCount

Behaviors an agent should know:

  • startUrls is the only required field. Any entry containing /search or find_desc= is treated as a search and expanded into businesses.
  • Non-paying runs are capped at 5 businesses (FREE_LIMIT); paid runs are not capped by that limit.
  • Setting includeReviews to false or maxReviewsPerBusiness to 0 skips the billed review feed.
  • proxyConfiguration defaults to { "useApifyProxy": false }; the actor works without a proxy. Only enable it if you hit rate limits.
  • maxConcurrency is clamped to 1 to 20.
  • Reviews are pushed to a separate reviews dataset, not the default dataset.
  • A 22-char encoded business id skips the page fetch and is the fastest input mode.

Billing: pay per event. Actor Start $0.00005 per event, each result (dataset item) $0.0015 on the FREE tier (down to $0.0013 at higher tiers), each review $0.0004 on the FREE tier (down to $0.0003 at higher tiers).

This actor is an independent tool and is not affiliated with, endorsed by or sponsored by Yelp. It reads publicly available Yelp business pages and Yelp's internal GraphQL endpoints through Yelp's public regional storefronts. It does not log in, does not use an account or API key and does not solve CAPTCHAs.

Users are responsible for their own compliance with Yelp's Terms of Service and with applicable data-protection law. The default dataset may contain reviewer display names and public profile links (personal data), so if you process it you should consider your obligations under laws such as the GDPR and the CCPA. Do not use reviewer personal data for unsolicited commercial outreach in violation of applicable law.