Yelp Reviews Scraper - Most Comprehensive avatar

Yelp Reviews Scraper - Most Comprehensive

Pricing

from $0.04 / 1,000 reviews

Go to Apify Store
Yelp Reviews Scraper - Most Comprehensive

Yelp Reviews Scraper - Most Comprehensive

πŸ”₯ ~$0.05/1K reviews πŸ”₯ Scrape all reviews for any Yelp business. Full review text, ratings, author profiles, photos, reactions, owner replies. Accepts business URLs or aliases.

Pricing

from $0.04 / 1,000 reviews

Rating

0.0

(0)

Developer

Kai

Kai

Maintained by Community

Actor stats

0

Bookmarked

315

Total users

256

Monthly active users

11 days ago

Last modified

Share

Yelp Reviews Scraper

Collect Yelp reviews and business context from business URLs, aliases, or encrypted business IDs. The default dataset contains one item per review, and the businesses dataset contains one item once a target's business identity is resolved.

What you get

  • Review text, rating, language, timestamps, and optional translation
  • Public author profile fields, feedback counts, reactions, photos, videos, and owner replies
  • Review history, reservation and check-in tags, and expert-recognition fields when Yelp returns them
  • Business identity, rating totals, language and rating breakdowns, location, hours, categories, and other available business details

Quick start

Run one business by URL:

{
"businesses": [
"https://www.yelp.com/biz/gary-danko-san-francisco"
]
}

Use an alias or a 22-character encrypted business ID:

{
"businesses": [
"WavvLdfdP6g8aZTtbBQHTw"
],
"maxReviewsPerBusiness": 10
}

Filter and sort reviews:

{
"businesses": ["gary-danko-san-francisco"],
"sortBy": "RATING_ASC",
"ratings": ["1", "2"],
"maxReviewsPerBusiness": 50
}

Search review text:

{
"businesses": ["gary-danko-san-francisco"],
"query": "service",
"maxReviewsPerBusiness": 20
}

Request Yelp's German language view and translations:

{
"businesses": ["gary-danko-san-francisco"],
"languageCode": "de",
"maxReviewsPerBusiness": 20
}

Input

FieldTypeDefaultDescription
businessesstring[][]Yelp business URLs, aliases, or 22-character encrypted business IDs. An omitted or empty list is a successful no-op. Every requested target is processed in input order, including repeated references.
sortBystringDATE_DESCDATE_DESC, DATE_ASC, RATING_DESC, RATING_ASC, or ELITES_DESC.
ratingsstring[]["1","2","3","4","5"]Zero or more star ratings from "1" through "5". An empty selection means all ratings, and repeated values are accepted.
maxReviewsPerBusinessinteger20Maximum saved reviews per business. Use 0 to request all available reviews.
querystring""Optional review search text. null is also accepted and treated as no query. Search results use Yelp's relevance order.
languageCodestring"en"Yelp language code such as en, de, or zh. Blank strings are passed to Yelp unchanged.
proxyConfigurationobject{"useApifyProxy":true}Apify Proxy settings or custom proxy URLs.

A raw 22-character value containing letters, numbers, _, or - is interpreted as an encrypted business ID. Use the full Yelp URL if a business alias happens to have that exact shape.

Apify Proxy is enabled by default. Set useApifyProxy to false without proxyUrls only for explicit direct mode. When Apify or custom proxy use is requested but no proxy URL can be allocated, the run fails before scraping instead of silently connecting directly.

Result storage and behavior

The default dataset stores reviews in the order Yelp returns them. The actor sends the selected sort and search options but does not re-sort or filter Yelp's response. Repeated rows returned by Yelp are preserved as received.

The named businesses dataset stores one business record for each resolved target. It is still written when a valid search returns zero reviews. Direct-ID input skips the business page, so page-derived fields such as categories and coordinates can be null; review-feed and business-detail fields remain available.

Businesses are processed independently and records are saved incrementally. If one acquisition or source row fails, completed records from the other businesses remain available, and a business row or completed review page from the failed target can also remain. If a row cannot be normalized, its raw upstream fields are preserved instead of being discarded. Dataset writer failures are terminal so the run cannot report success after a storage failure; records written before that failure remain available. Mixed and all-acquisition-failed batches log the failed targets and complete without discarding saved data; an all-acquisition-failed batch succeeds with zero records, matching the original Actor. A valid business with zero matching reviews also succeeds.

Review output

This example contains selected, unchanged fields from one record in a validated live run on July 30, 2026. Reviewer identity fields are omitted.

{
"id": "4c5hsfXxkQnRs_gierUmvQ",
"businessAlias": "gary-danko-san-francisco",
"businessName": "Gary Danko",
"businessEncId": "WavvLdfdP6g8aZTtbBQHTw",
"rating": 5,
"text": "Amazing Food! Service was superb! My wife and I really enjoy our Anniversary dinner! It was our first visit to SF in a long a time. We brought our daughter and we feel in love of the food. Very beautiful setting inside restaurant.",
"translatedText": null,
"language": "en",
"createdAt": "2026-07-27T21:02:17Z",
"localDateTime": "2026-07-27T14:02:17-07:00",
"feedback": {
"usefulCount": 0,
"funnyCount": 0,
"coolCount": 0
},
"reactions": [],
"photos": [],
"ownerReply": null,
"scrapedAt": "2026-07-30T05:20:11.595Z"
}

Each full review record also contains:

  • author: public profile ID, display name and location, review/friend/photo counts, elite status, and profile photo
  • photos and videos: media IDs, URLs, captions, dimensions, upload details, keywords, and reaction counts when available
  • previousReviewIds, tags, expertRecognition, and userSpecifiedTimeOfExperience

Optional upstream values are represented as null or empty arrays instead of being invented.

Business output

This example contains selected, unchanged fields from the matching businesses record in the same validated live run.

{
"id": "WavvLdfdP6g8aZTtbBQHTw",
"alias": "gary-danko-san-francisco",
"name": "Gary Danko",
"rating": 4.5,
"reviewCount": 6133,
"reviewCountsByRating": [124, 216, 484, 1095, 4219],
"reviewCountsByLanguage": [
{
"language": "en",
"count": 6135
},
{
"language": "zh",
"count": 2
},
{
"language": "de",
"count": 1
}
],
"primaryPhotoUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/5dbjkeTld05HumeToIAhRQ/60s.jpg",
"coordinates": {
"latitude": 37.805823482811675,
"longitude": -122.42060564460563
},
"countryCode": "US",
"formattedAddress": {
"addressLine1": "800 N Point St",
"city": "San Francisco",
"regionCode": "CA",
"postalCode": "94109"
},
"isCurrentlyOpen": false,
"scrapedAt": "2026-07-30T05:20:11.582Z"
}

The full business record also includes nullable groups for categories, operating hours, phone and price display, attributes, media totals, review highlights, owner information, special hours, category ancestry, cost guides, and related links.

Known limits

  • Yelp controls search matching and relevance. A term without an exact text match can still return broader results.
  • Search can ignore sortBy and the rating filter. Combining search with a non-English language can also produce no matches.
  • Translation and optional enrichment fields depend on what Yelp returns for the business and language.
  • maxReviewsPerBusiness: 0 can take a long time for businesses with thousands of reviews.
  • Yelp can change or temporarily restrict its responses, which can cause a business to fail.
  • Direct-ID mode cannot provide fields that are available only on the business page.

Review records can include public profile names, locations, profile images, and user-uploaded media. Keep only the fields you need and apply an appropriate retention policy for your use case.