Yelp Scraper | Business Details & Reviews avatar

Yelp Scraper | Business Details & Reviews

Pricing

from $0.24 / 1,000 reviews

Go to Apify Store
Yelp Scraper | Business Details & Reviews

Yelp Scraper | Business Details & Reviews

Export Yelp business URLs as contact details and customer reviews. Filter reviews by rating, language, dates or text; include available media and owner replies.

Pricing

from $0.24 / 1,000 reviews

Rating

0.0

(0)

Developer

Eli J

Eli J

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Share

What you can export

Use this Yelp business and reviews scraper for known-business research and feedback analysis. Supply public Yelp business URLs to export contact details and customer reviews, with available media, reactions and owner replies.

Choose details, reviews or both, then apply review filters. Business discovery by keyword or location is outside this product; an export is not an archive of deleted or non-recommended reviews.

Try the example input

{
"businessUrls": [
{
"url": "https://www.yelp.com/biz/prince-street-pizza-new-york-2"
}
],
"maxReviewsPerBusiness": 10
}

The schema prefill is exactly this example. API callers must supply their own business URLs: {} exits successfully with guidance and produces no rows. Mobile and regional URLs are accepted, including query strings; identity is resolved from the URL path. Query filters on an input URL are ignored: set the explicit review filters below. Strings such as "https://www.yelp.ca/biz/a-business-toronto" are also accepted in the array.

Input

FieldTypeDefaultMeaning
businessUrlsarrayemptyYelp /biz/<slug> URLs, either strings or objects with url. No automatic business list.
modestringdetailsAndReviewsdetailsAndReviews, details, or reviews.
maxReviewsPerBusinessinteger100Maximum matching unique review rows per business. -1 means all available; 0 means no reviews. Prefill is 10. Business rows do not count toward this cap.
sortBystringrecommendedrecommended, newest, oldest, highest, lowest, or elites.
languagestringenReview language code, such as en or fr. Empty string reads every language reported by Yelp.
ratingsarrayemptyIntegers from 1 to 5. Empty array includes all star ratings.
keywordsarrayemptyUp to five words or phrases, matched as case-insensitive literal substrings of original full text; at least one must match.
dateFromstringunsetInclusive business-local creation date, YYYY-MM-DD or a relative period such as 30 days, 2 months, 1 year.
dateTostringunsetInclusive business-local creation date, with the same date syntax.
translateTostringemptyTarget language code for source translation, such as en or fr. Original text is always retained.
includeAuthorbooleanfalseInclude source-supplied public reviewer/profile and owner identity fields.

Relative periods use the run's UTC date. Months and years subtract calendar months and clamp to the month's last day. Dates apply to the review creation timestamp, not the user-specified experience time. Zero, empty arrays, empty language and false are preserved. Duplicate business URL paths are read only once, even when hosts or query strings differ.

For example, to export recent low-star reviews in every language:

{
"businessUrls": ["https://www.yelp.com/biz/prince-street-pizza-new-york-2"],
"mode": "reviews",
"maxReviewsPerBusiness": 100,
"sortBy": "newest",
"language": "",
"ratings": [1, 2],
"dateFrom": "30 days"
}

Output

The default dataset contains one business row per successfully read business in details modes, followed by review rows in review modes. Reviews include the same business metadata in business, so review-only exports keep contact details and rating distributions. JSON retains nested fields. The dataset view shows identity, text, rating, date and contacts. Download JSON/CSV/Excel from the dataset or use the results output link.

Illustrative values below show the row shape; they are not a claim about a live business's current rating or reviews.

[
{
"recordType": "business",
"businessId": "abcdefghijklmnopqrstuv",
"alias": "example-cafe-city",
"name": "Example Café",
"businessUrl": "https://www.yelp.com/biz/example-cafe-city",
"sourceUrl": "https://www.yelp.com/biz/example-cafe-city",
"scrapedAt": "2026-10-06T00:00:00Z",
"phone": "+1 555 0100",
"website": "https://example.com",
"address": "Example Street, Example City",
"location": null,
"categories": [],
"price": "$$",
"rating": 4.2,
"reviewCount": 15,
"ratingDistribution": {"1": 1, "2": 1, "3": 2, "4": 3, "5": 8},
"reviewLanguages": [],
"hours": null,
"isClosed": false,
"claimability": null,
"serviceArea": null,
"primaryPhoto": null,
"attributes": [],
"alternateNames": [],
"summary": null,
"closedUntil": null,
"aboutTheBusiness": {"specialties": null, "history": null},
"properties": [],
"healthInspections": [],
"advertiser": null,
"verifiedLicenses": null,
"verified": null,
"scrapeStartedAt": "2026-10-05T23:59:55Z",
"scrapeFinishedAt": "2026-10-06T00:00:00Z"
},
{
"recordType": "review",
"businessId": "abcdefghijklmnopqrstuv",
"businessName": "Example Café",
"business": {},
"businessUrl": "https://www.yelp.com/biz/example-cafe-city",
"sourceUrl": "https://www.yelp.com/biz/example-cafe-city",
"scrapedAt": "2026-10-06T00:00:00Z",
"reviewId": "example-review-id",
"reviewUrl": "https://www.yelp.com/biz/example-cafe-city?hrid=example-review-id",
"text": "An illustrative full review.",
"translatedText": null,
"language": "en",
"rating": 4,
"date": "2026-10-05T12:00:00-04:00",
"timeOfExperience": null,
"author": null,
"photos": [],
"videos": [],
"ownerResponse": null,
"reactions": {},
"feedback": [],
"tags": null,
"previousReviews": [],
"latestReviewUpdate": null,
"appreciation": null,
"earnedExpertRecognition": null
}
]

Business metadata includes source address/country/coordinates, categories, price, phone, direct website, current and special opening hours, closure/claim status, service areas, primary photo, selected source attributes, visible alternate names, summary, specialties/history/year established, organized amenities/properties and health inspections. ratingDistribution maps star labels 1 through 5 to source totals. reviewLanguages reports source language/count pairs. These totals describe Yelp's business, not the filtered export.

advertiser is Yelp's isYelpAdvertiser flag, including false; null means it was absent. verifiedLicenses retains the source's verified license-number records; an empty array means Yelp returned none, and null means the field was absent. verified is true when that source list is non-empty, false when empty and null when absent; it describes verified licenses, separately from claimed ownership. These values also appear inside each review's business.

scrapeStartedAt and scrapeFinishedAt are UTC timestamps measured by this Actor immediately before URL resolution and after the initial business data read. They measure the business read, including retries, and exclude review pagination and dataset delivery. scrapedAt equals the finish time. Reviews retain the same business read timestamps inside business; review date remains the source's creation time. Business highlights are not supplied by the measured source documents and are not inferred.

Review date is the exact source business-local creation timestamp with its offset. timeOfExperience retains the separate source value, including integer timestamps. tags retains source metadata such as first-review and check-in flags. Photo/video objects retain source URLs, captions and dimensions when present. ownerResponse contains reply ID, full text, date and optional owner data. reactions maps source reaction names to counts; feedback retains each reaction's type, count and source displayText label. previousReviews, updates, appreciation and recognition retain source-provided metadata. Missing source values are null or empty collections; they are not invented. Public author statistics/profile/photo fields are included only when includeAuthor is true. When false, author/owner/uploader/user objects are removed recursively, while review text and reply text remain.

Pagination, reliability and limits

The Actor reads 20 reviews per source cursor page. With language: "", it explicitly paginates each language Yelp reports. Date and rating sorts merge the language feeds. Recommended and elite sorts preserve Yelp order within each language, visiting the default returned language first; Yelp supplies no cross-language relevance/elite rank. A finite cap can therefore end before every language is visited in those two sorts. “All available” means the source's available feeds, excluding deleted, removed or non-recommended reviews; it is not an archive or a guarantee that source totals stay constant during a run.

Repeated cursors, empty continuations and continuation pages with no new review IDs are reported as incomplete history in ERRORS.

Regional/mobile URL syntax is supported. Live URL resolution was measured on 30 businesses across the US, UK, Canada and Czech Republic; other regions are accepted but not separately proven. Menus, dishes and full business galleries are outside the details/reviews scope. This Actor fetches live source data; Yelp may change or block its delivered interfaces.

Requests try Apify datacenter egress first, then up to ten fresh residential sessions for blocked, rate-limited, invalid or failed responses. Successful sessions expire after 50 seconds or 24 requests. Residential proxy use is automatic when needed and adds platform cost. There is no customer proxy setup, login or browser requirement.

Errors never enter the dataset. Handled errors appear in the key-value store's ERRORS record and the errors output link. A later page failure can leave valid delivered rows with incomplete history; check ERRORS before treating an export as complete. All inputs failing with no rows fails the run; clean empty results and empty input succeed. Date/text filtering may require reading extra source pages and can cost more than an unfiltered export. Only matching unique review rows are delivered.

Invalid input options, including impossible dates or a reversed date range, exit successfully with ERRORS and guidance before source requests. Check that record even when the run status is successful. Businesses with no reviews retain a null rating and zero rating-distribution counts.

Billing

Business rows use the business pay-per-event unit; review rows use review. Rows are delivered individually. This Actor runs at up to 1 GB of memory and charges one apify-actor-start event at $0.00005 per run. At the launch FREE-tier prices, event charges for ten review rows with no business row total $0.00250: ten review events at $0.000245 plus one start event. One business row with ten review rows adds one business event at $0.00010, for $0.00260 in event charges. Reaching the maximum charge stops further delivery, pages and businesses immediately. Failed requests and error records are not result events. Platform compute, transfer and any residential proxy usage remain visible in the run's usage. The Store pricing tab is the authority for the final unit prices.