Yelp Business Search & Review Scraper
Pricing
from $0.49 / 1,000 results
Yelp Business Search & Review Scraper
Search Yelp by keyword and location, or scrape specific business pages directly, to collect business details, ratings, categories, contact details, and customer reviews.
Pricing
from $0.49 / 1,000 results
Rating
0.0
(0)
Developer
Nimbryxo-studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 days ago
Last modified
Categories
Features
Share
Yelp Business Profiles & Review History Extractor
Yelp packs a lot into each business page: star ratings, price signals, weekly hours, photo galleries, contact details, and years of customer reviews. This actor turns that material into structured business records, with the review feed paged well beyond the handful of reviews Yelp shows by default.
What this actor does
- Finds businesses by keyword and location, or by a Yelp search URL that already contains filters.
- Looks up exact businesses from a Yelp business URL, a bare alias such as
prince-street-pizza-new-york-2, or a 22-character Yelp business ID. - Pages each business's review feed up to your chosen limit, including reviewer names, Elite years, photos, reactions, and owner replies.
- Adds search metadata so you can tell organic ranking from sponsored placement and remove duplicate cards.
- Omits empty fields at every level. A business that does not publish a website, price level, or owner reply simply has no such key in its record.
- Writes an explicit status record when a business is missing, a page is blocked, or Yelp changes the data contract, so an empty dataset is never mistaken for a successful scrape.
Output per business
Each business is one dataset row. Reviews are nested under reviews.
| Field | Description |
|---|---|
recordType | business for a business row, status for a run status row |
businessId | Yelp's 22-character business ID |
encId | The same stable Yelp business ID, kept as a separate field for joins |
alias | Yelp URL slug, e.g. prince-street-pizza-new-york-2 |
name | Business name |
categories | Array of Yelp category titles |
address | Object with streetAddress, addressLocality, addressRegion, postalCode, addressCountry, and formatted when supplied |
city | City name |
state | State or region code |
zip | Postal code |
country | Two-letter country code |
lat | Latitude |
lng | Longitude |
rating | Average star rating (number) |
reviewCount | Review total shown on the business profile |
reviewsTotal | Reviews available in the public review feed, when it differs from reviewCount |
price | Price level such as $ or $$ |
phone | Business phone number |
website | Business website URL |
hours | Weekly hours keyed by short day name, each value an array of time ranges |
photos | Business photo URLs, including the primary photo and gallery |
url | Yelp business page URL |
isClosed | Whether Yelp marks the business as closed |
isClaimed | Whether the business profile has been claimed |
description | Short business summary from Yelp |
reviews | Array of review objects, omitted when reviews are off or none are available |
searchRank | Organic position in the search results, when found through search |
sponsored | true when the business first appeared as a sponsored card |
searchQuery | Keyword that found the business |
searchLocation | Location used for that search |
searchCategory | Category filter used for that search |
sourceUrl | Search page or business URL the record came from |
scrapedAt | ISO timestamp for the record |
Review objects contain:
| Field | Description |
|---|---|
id | Review ID |
rating | Star rating (1–5) |
text | Full review text |
author | Reviewer display name |
authorId | Reviewer ID |
authorUrl | Reviewer profile URL |
authorLocation | Reviewer location as shown by Yelp |
authorReviewCount | Number of reviews on the reviewer's profile |
date | Review date in UTC |
dateLocal | Review date in the business's local time |
photos | Review photo URLs |
ownerReply | Object with text, author, and date when the business replied |
elite | Whether the reviewer has an Elite year |
eliteYear | The Elite year Yelp displays |
language | Review language code |
isFirstReview | Whether Yelp marks this as the reviewer's first review |
checkInCount | Check-in count attached to the review |
reactions | Object with useful, funny, and cool counts |
Status records
When something prevents a business or search page from being collected, the dataset receives a row with recordType: "status":
statusisnot_found,blocked,api_drift,no_results, orinvalid_input.messageexplains what happened.sourceUrlandbusinessIdare included when known.scrapedAtrecords when the status was written.
Legacy compatibility keys are also present when they have values: directUrl (same as url), bizId (same as alias), aggregatedRating (rating as text), priceRange (same as price), and images (same as photos). Review rows also keep isUsefulCount, isFunnyCount, and isCoolCount beside the reactions object.
Status rows are separate from business rows, so filter on recordType before loading the business records.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search discovers businesses by keyword, category, or Yelp search URL; direct scrapes business URLs, aliases, or business IDs |
searchQuery | string | pizza | Keyword for mode=search |
location | string | New York, NY | City, neighborhood, or ZIP for mode=search |
startUrls | array | [] | Yelp search URLs in mode=search, or business URLs, aliases, and IDs in mode=direct |
categories | array | [] | Yelp category aliases or names used to narrow a search |
sortBy | string | recommended | Search ordering: recommended, rating, or reviewCount |
price | array | [] | Price levels $, $$, $$$, $$$$; empty keeps all |
minRating | number | 0 | Drop businesses rated below this value (0–5) |
maxItems | integer | 50 | Maximum business records (1–500) |
maxReviewsPerBusiness | integer | 20 | Maximum reviews per business (1–1000) |
includeReviews | boolean | true | Turn off to skip review collection |
reviewSort | string | DATE_DESC | DATE_DESC, DATE_ASC, RATING_DESC, RATING_ASC, RELEVANCE_DESC, or ELITES_DESC |
reviewRatings | array | ["5","4","3","2","1"] | Star ratings to include |
reviewLanguage | string | en | Review language code, or all to page every language Yelp reports |
proxyConfiguration | object | Apify Proxy AUTO | Optional routing choice; the actor automatically uses a working route when Yelp blocks a request |
mode is the only required field. mode=search needs a query, category, or search URL. mode=direct needs at least one business URL, alias, or ID.
Example: keyword search
{"mode": "search","searchQuery": "ramen","location": "Seattle, WA","price": ["$$", "$$$"],"minRating": 4,"maxItems": 20,"maxReviewsPerBusiness": 30,"reviewSort": "DATE_DESC","reviewLanguage": "en"}
Example: specific businesses by URL
{"mode": "direct","startUrls": ["https://www.yelp.com/biz/prince-street-pizza-new-york-2","https://www.yelp.com/biz/bar-lento-new-york"],"maxItems": 2,"maxReviewsPerBusiness": 100,"reviewSort": "RATING_DESC","reviewRatings": ["5", "4"]}
Example: businesses and reviews in another language
{"mode": "direct","startUrls": ["https://www.yelp.com/biz/bar-lento-new-york"],"maxReviewsPerBusiness": 50,"reviewLanguage": "all"}
Example: profiles only
{"mode": "search","searchQuery": "coffee","location": "Portland, OR","categories": ["coffee"],"includeReviews": false,"maxItems": 10}
Use cases
- Competitive benchmarking — compare ratings, review volume, price levels, and review themes across a set of local businesses.
- Review monitoring — schedule runs against your own locations and watch new reviews, owner replies, and rating changes over time.
- Lead research — collect phone numbers, websites, cities, and categories for businesses in a target market.
- Voice-of-customer analysis — export hundreds of reviews per business with ratings, dates, languages, and reviewer context.
- Location planning — map business density and quality across ZIP codes, neighborhoods, or categories.
- Data enrichment — join Yelp business IDs, aliases, websites, and coordinates to an existing CRM or dataset.
FAQ
Do I need to supply a proxy?
No. The actor starts with a direct request and automatically routes through Apify Proxy when Yelp blocks it. Leave proxyConfiguration at its default, or supply a country or custom proxy only when you need a specific route.
How many businesses can one search return?
Yelp caps a single search at 240 businesses, displayed 10 at a time. maxItems can be as high as 500 across multiple queries or direct URLs, but each individual search stops at Yelp's 240-result ceiling.
How many reviews can I collect per business?
Up to 1,000. The review feed is paged at 49 reviews per request, so a deep run uses several requests per business. Set maxReviewsPerBusiness lower for faster, cheaper runs.
Why is reviewsTotal sometimes lower than reviewCount?
Yelp's profile count and its public review feed are not identical. The feed leaves out reviews Yelp does not recommend, so reviewsTotal can be slightly lower than the number shown on the page.
What does reviewLanguage: "all" do?
The actor reads the language counts Yelp reports for the business and pages each language until the review limit is reached, de-duplicating by review ID. It can use several requests per business.
Why is a business or review field missing?
Yelp does not publish every field for every business. Missing values are omitted rather than written as null, empty strings, or empty arrays.
What happens when Yelp changes its data format?
The actor writes an api_drift status row with a message and the source URL, and the run status message reports the problem. It does not silently return an empty dataset.
Can I use a Yelp search URL with filters already in it?
Yes. Put it in startUrls with mode=search; the actor keeps the URL's query parameters and pages from its existing start position.
Does this actor collect the reviews Yelp does not recommend? No. It collects the public review feed. Reviews outside that feed are not exposed, which is why the feed total can differ from the profile count.
Is this affiliated with Yelp? No. This is an independent third-party actor and is not endorsed by or affiliated with Yelp.