Yelp Business Scraper - Most Comprehensive
Pricing
from $0.08 / 1,000 places
Yelp Business Scraper - Most Comprehensive
🔥 ~$0.1/1K places 🔥 Look up any Yelp business by URL or alias. Returns comprehensive business data including categories, hours, location, photos, attributes, and more. Optionally fetches all reviews inline.
Pricing
from $0.08 / 1,000 places
Rating
5.0
(1)
Developer
Kai
Maintained by CommunityActor stats
1
Bookmarked
127
Total users
26
Monthly active users
2 hours ago
Last modified
Categories
Share
Get the Yelp data of any business, or find businesses by location, category, and keyword. Each business has 77 fields: rating and review counts by star, address, coordinates, phone, hours, categories, attributes, photo counts, and more. Add the reviews (21 fields each, with reactions, photos, and owner replies) and the photos and videos of each business in the same record.
Look up one business or search a whole city. A one-business run takes about 3 to 5 seconds. A 20-business search takes about 12 seconds, and 300 reviews of one business take about 17 seconds. Start with a Yelp URL, an alias, an encrypted business ID, or a location. $0.10 per 1,000 businesses and $0.02 per 1,000 reviews.
What can you do with it?
- Local lead lists. Search a category in a city, such as plumbers in Austin. Every business comes with its name, address, phone, categories, rating, review count, hours, and coordinates.
- Competitor benchmarking. Compare ratings, the split of reviews by star, review counts, price range, and review languages across nearby businesses.
- Site and market research. Search around a point with a radius. Sort by distance, rating, or review count to see how many competitors are close.
- Reputation monitoring. Collect the newest reviews of your places every
day or week. Use the review
idto skip reviews that you already have. - Complaint finding. Read only the 1- and 2-star reviews, or only the reviews that mention a word such as "parking".
- Sentiment and topic analysis. Feed review text, ratings, languages, reactions, and reviewer details into your models.
- Reviewer analysis. Read the Elite reviews first. See how many reviews, friends, and photos each reviewer has.
- Owner reply audits. Find the reviews that got a reply and read the replies.
- Listing audits. Compare the name, address, phone, hours, and categories on Yelp with your own records. Collect photos and videos with their captions.
What data does it extract?
| Data | When you get it |
|---|---|
| Business ID, alias, name, rating, review count, reviews by star, reviews by language, main photo | Every business |
| Address, coordinates, country code, phone | Every business that has them. A business without a listed phone gets an empty phone. |
| Categories with their parent categories, price range, closed flag | Every business that has them |
| Opening hours for each day, open-now flag, and when Yelp last updated the hours | Every business that has hours |
| Attributes and services as yes/no or list values, such as parking, credit cards, and alcohol | When Yelp lists them |
| Photo counts by tab, highlight videos, review snippets, and the number of reviews that Yelp does not recommend | When Yelp has them |
| Website, menu and order links, claimed flag, year established, specialties, summary, popular dishes, menu items, owner profile, health inspections, licenses, and about 30 more | Only when Yelp serves its business web page to the run. See "Why are many fields null?". |
| Reviews: ID, rating, full text, translation, language, dates, reviewer details, votes, reactions, photos, videos, owner reply, and tags | When includeReviews is on |
| Photos and videos: links, thumbnails, captions, sizes, uploader, likes, and the review that holds them | When includePhotos is on |
Yelp does not have every field for every business. A field without data is
null or [].
Quick start
- Enter a Yelp URL, an alias, or an encrypted ID in Business URLs, Aliases, or IDs. Or enter a Location to search.
- Turn on Include Reviews if you want reviews, and set Max Reviews Per
Business. Use
0to get all reviews. - Click Start. Download the results as JSON, CSV, Excel, or HTML.
The same input as JSON:
{"businesses": ["https://www.yelp.com/biz/gary-danko-san-francisco"],"includeReviews": true,"maxReviewsPerBusiness": 20}
Examples by use case
One business with its profile only. This is the fastest and cheapest run:
{"businesses": ["gary-danko-san-francisco"]}
A lead list. The 100 best-rated plumbers in Austin:
{"category": "plumbers","location": "Austin, TX","searchSort": "rating","maxSearchResults": 100}
Competitors near a site. Coffee shops within 3 km of a point, nearest first:
{"category": "coffee","latitude": 30.2672,"longitude": -97.7431,"searchRadius": 3,"searchRadiusUnit": "km","searchSort": "distance","maxSearchResults": 50}
Businesses and their reviews in one run. 20 pizza places with their 10 newest reviews each:
{"searchTerm": "pizza","location": "San Francisco, CA","maxSearchResults": 20,"includeReviews": true,"maxReviewsPerBusiness": 10}
Every review of a place:
{"businesses": ["WavvLdfdP6g8aZTtbBQHTw"],"includeReviews": true,"maxReviewsPerBusiness": 0}
Monitor new reviews. Run this on a schedule. Yelp has no date filter, so read
the newest reviews and use the id field to skip reviews that you already have:
{"businesses": ["gary-danko-san-francisco", "zuni-cafe-san-francisco"],"includeReviews": true,"maxReviewsPerBusiness": 50,"sortBy": "DATE_DESC"}
Find complaints. Only 1- and 2-star reviews:
{"businesses": ["gary-danko-san-francisco"],"includeReviews": true,"maxReviewsPerBusiness": 100,"ratings": ["1", "2"]}
Reviews about a topic. Reviews that mention parking:
{"businesses": ["gary-danko-san-francisco"],"includeReviews": true,"maxReviewsPerBusiness": 50,"query": "parking"}
Reviews from Elite reviewers first:
{"businesses": ["gary-danko-san-francisco"],"includeReviews": true,"maxReviewsPerBusiness": 50,"sortBy": "ELITES_DESC"}
Reviews in another language. Set languageCode to a code such as de, fr,
or es. You get the reviews that people wrote in that language:
{"businesses": ["gary-danko-san-francisco"],"includeReviews": true,"maxReviewsPerBusiness": 50,"languageCode": "de"}
Photos and videos with captions:
{"businesses": ["gary-danko-san-francisco"],"includePhotos": true,"maxPhotosPerBusiness": 100}
Compare places. One run reads all the places. The dataset keeps the order of your list:
{"businesses": ["gary-danko-san-francisco","zuni-cafe-san-francisco","tartine-bakery-san-francisco"]}
Choose the businesses
Use one of two ways. Direct lookup reads the businesses that you list. Search finds businesses for you.
| What you have | Use | Required input |
|---|---|---|
| A Yelp URL, an alias, or an encrypted business ID | Direct lookup | businesses |
| A city, postal code, address, or neighborhood | Search by location | location |
| A point on a map | Search by coordinates | latitude and longitude |
If you set location, latitude and longitude, or searchTerm, the Actor runs
a search and ignores businesses. To do both, start two runs.
Look up businesses
Put one or more entries in businesses. You can mix the three kinds in one run.
-
URL. A business page link, such as
https://www.yelp.com/biz/gary-danko-san-francisco. These forms work too:m.yelp.comand regional sites such asyelp.co.ukandyelp.ca.- A link without
https://. - A link with a query string or a sub-page such as
/photos. - A link that your browser copies with a percent-encoded name, such as
https://www.yelp.com/biz/lol%C3%B3-san-francisco-4.
The Actor reads the alias from the link and asks yelp.com for it.
-
Alias. The last part of the URL, such as
gary-danko-san-francisco. -
Encrypted business ID. 22 characters, such as
WavvLdfdP6g8aZTtbBQHTw. Each business record has its ID in theidfield. A business ID can return fewer optional fields than a URL or an alias, so use a URL when you can.
The Actor reads the businesses in your order, so the dataset keeps that order. A
repeated business is read again and saved again. A business that fails does not
stop the others. The log shows Failed to process and the reason, and the run
saves the other businesses. A link that is not a business page, such as a search
page, fails in the same way.
Search for businesses
- Where. Set
locationto a city, postal code, address, or neighborhood. Or setlatitudeandlongitudetogether. You can set both. - What.
searchTermis a keyword, such aspizza,dentist, or a business name.categoryis a Yelp category alias, such asrestaurants,plumbers, orcoffee. A search needs a location or a coordinate pair. AsearchTermwithout a location fails the run with a message that says so. An unknown category alias fails the run too. - How many.
maxSearchResultsis 20 by default. Yelp shows at most 240 results for one search, the same as its 24 web pages of 10, so a higher number gives the same result as 240. A search cannot return more businesses than Yelp lists for it. - Order.
searchSortisdefault(Yelp's best match),distance,rating, orreview_count. - Radius. Use
searchRadiuswithlatitudeandlongitude. The Actor drops results outside the radius. Yelp searches at most 25 miles (about 40 km) around the point.searchRadiusUnitiskmormiles.
Yelp can return the same business on two result pages. The Actor saves it once,
so a search with 240 results usually gives about 220 businesses. To find more
businesses, split the area into smaller searches, add a category, or run again
with another searchSort. A search with no matches ends as succeeded with an
empty dataset, and the log shows a warning.
Add reviews and media
| Add to each business | Turn on | Set the maximum with |
|---|---|---|
| Reviews | includeReviews | maxReviewsPerBusiness (default 20, 0 for all) |
| Photos and videos | includePhotos | maxPhotosPerBusiness (default 20, 0 for no limit) |
Reviews are a list in the reviews field of each business. The Actor does not
save a business as complete when a review or media section you asked for cannot
be read.
maxPhotosPerBusiness counts photos and videos together. With 0, a business
with more than 3,000 photos and videos can fail, and the Actor does not save it.
Filter the reviews
Filters are combined. A review must match every filter that you set. Inside one filter, a review can match any of the values.
ratings. Any combination of1to5. You can use strings or numbers.query. Text that the reviews must match. Yelp then orders the reviews by relevance, and it can ignoresortByandratings.languageCode. The language that the reviews are written in. The default isen, so you get only English reviews. ThereviewCountsByLanguagefield of each business lists its languages with counts. For a language other thanen,translatedTextholds Yelp's translation when Yelp has one.
Yelp does not recommend some reviews. The Actor does not return them. The
notRecommendedReviewCount field of each business has their number.
Choose the review order
sortBy sets the order. The default is DATE_DESC.
| Value | Order |
|---|---|
DATE_DESC | Newest first. |
DATE_ASC | Oldest first. |
RATING_DESC | Five-star reviews first. |
RATING_ASC | One-star reviews first. |
ELITES_DESC | Reviews from Elite reviewers first. |
A non-empty query uses relevance order for every sortBy value.
Input reference
Give businesses, or a search with a location or a coordinate pair.
| Field | Type | Default | Description |
|---|---|---|---|
businesses | string[] | [] | Yelp URLs, aliases, or 22-character encrypted business IDs. Repeated entries stay in order and are saved separately. |
searchTerm | string | none | Keyword, such as coffee, dentist, or a business name. A search also needs a location or a coordinate pair. |
location | string | none | City, postal code, address, or neighborhood. Required for a search unless you set both coordinates. |
latitude | number | none | From -90 to 90. Needs longitude. |
longitude | number | none | From -180 to 180. Needs latitude. |
category | string | none | Yelp category alias used to filter a search, such as restaurants. It does not start a search. |
maxSearchResults | integer | 20 | Maximum businesses from a search, from 1. Yelp shows at most 240 results for one search. |
searchSort | string | default | default, distance, rating, or review_count. |
searchRadius | number | none | Search radius for a search with coordinates. A value of 0 gives no result unless a business is at the exact point. Yelp searches at most 25 miles. |
searchRadiusUnit | string | km | km or miles. |
includePhotos | boolean | false | Add the photos and videos of each business. |
maxPhotosPerBusiness | integer | 20 | Maximum photos and videos together for each business. 0 means no limit. |
includeReviews | boolean | false | Add the reviews of each business. |
maxReviewsPerBusiness | integer | 20 | Maximum reviews for each business. 0 collects all available reviews. |
sortBy | string | DATE_DESC | DATE_DESC, DATE_ASC, RATING_DESC, RATING_ASC, or ELITES_DESC. |
ratings | string[] or number[] | all ratings | Any combination of 1, 2, 3, 4, and 5. |
query | string | none | Text that returned reviews must match. Uses relevance order. |
languageCode | string | en | Language that the reviews are written in, such as en, de, or fr. |
proxyConfiguration | object | Apify Proxy enabled | Optional connection settings managed by Apify. |
Repeated filter values are accepted. Unknown input fields are ignored. A value
with the wrong type, such as a text maxSearchResults, fails before the run
starts.
Output
Each item in the dataset is one business. The Overview table shows the name,
alias, rating, review count, price, phone, address, city, state, coordinates, and
the open and closed flags. A field without data is null or [].
reviews is in the item only when includeReviews is on. businessPhotos and
businessVideos are lists when includePhotos is on. Without it they are
null.
Fields by topic
- Identity. ID, alias, name, main photo, and alternate names.
- Rating. Rating, review count, and the number of reviews for each star level and each language. The number of reviews that Yelp does not recommend.
- Location and contact. Address, coordinates, country code, phone, neighborhood, and service area.
- Hours. Opening hours for each day, open-now and closed-today flags, special hours, and when Yelp last updated the hours.
- Classification. Categories, category details, and the parent categories of each category.
- Attributes and services. Attributes with yes/no, single, or list values. Ambiance, specialties, and summary.
- Business details. Claimed flag, year established, owner profile, website, menu and order links, menu items, popular dishes, health inspections, licenses, and notices.
- Media. Photos, videos, photo counts by tab, highlight videos, and the main photo.
- Reviews. The reviews of the business, when you ask for them.
- Run. The UTC time at which the Actor read the business.
Business example
This example is Gary Danko with two reviews, one photo, and one video removed to
keep it short. Square brackets mark values removed from the documentation. In
this run Yelp did not serve its business web page, so the fields that need the
page are null. The next section lists them.
Why are many fields null?
Yelp has two sources for a business. Its data service gives the fields in the
example above. Its business web page gives 40 more fields, and the menu page
gives menu. Yelp blocked the web page for every run that we tested with the
default Apify Proxy. The Actor then saves the business with every field that
the data service gives, and the page fields stay null. When the page loads,
the Actor fills them.
These fields need the business web page: closedUntil, isClaimed,
isYelpAdvertiser, isMultiloc, hasStorefrontAddress, yearEstablished,
location, meteredPhoneNumber, specialties, summary, alternateNames,
ambiance, logo, externalResources (the website, menu, and order links),
yelpMenu, serviceArea, messaging, onlineOrdering, media, searchStats,
reviewHighlights, healthInspections, verifiedLicenses, attributes,
menuVerbiage, consumerAlert, bizOwnerProfile, dataFreshness,
isCommunityQuestionsEnabled, isConnectEnabled, isItemListSchemaEnabled,
communityQuestionCount, postCount, containerBusiness, categoryGroups,
associatedSearches, internalLinks, jobPricing, jobs, popularDishes, and
menu. The fields categories, isClosed, phoneNumber, operationHours, and
priceRange come from the data service too, so they are filled either way.
Field groups
| Group | Root fields |
|---|---|
| Identity and status | id, alias, name, alternateNames, isClosed, closedUntil, isClaimed, isYelpAdvertiser, isMultiloc, hasStorefrontAddress, yearEstablished, containerBusiness |
| Rating | rating, reviewCount, reviewCountsByRating, reviewCountsByLanguage, notRecommendedReviewCount, reviewHighlights, reviewSnippets |
| Location and contact | formattedAddress, coordinates, countryCode, location, serviceArea, phoneNumber, formattedPhone, meteredPhoneNumber |
| Hours | operationHours, regularHoursRaw, upcomingSpecialHours, regularHoursLastUpdated, isCurrentlyOpen, isClosedToday |
| Classification | categories, categoryDetails, categoryAncestry, categoryGroups, priceRange |
| Attributes | authoritativeAttributes, attributes, ambiance, specialties, summary |
| Business details | externalResources, bizOwnerProfile, businessOwnerVideo, healthInspections, verifiedLicenses, consumerAlert, dataFreshness, jobs, jobPricing, costGuides, partnerData, messaging, onlineOrdering |
| Menu | menu, yelpMenu, menuVerbiage, popularDishes |
| Yelp page data | logo, logoHasPurchased, media, searchStats, associatedSearches, internalLinks, isCommunityQuestionsEnabled, isConnectEnabled, isItemListSchemaEnabled, communityQuestionCount, postCount |
| Media | primaryPhotoUrl, photoTabs, videoCarouselItems, businessPhotos, businessVideos |
| Reviews | reviews |
| Run | scrapedAt |
Field notes
idis the encrypted business ID. Use it to remove repeated rows when you join the results of two searches.reviews[].idis the review ID. Use it to skip reviews that you already have.reviewCountsByRatinghas five numbers for the ratings 1 to 5, in that order.phoneNumberandformattedPhonehold the phone number that Yelp lists. They are empty text when the business has no phone on Yelp. For some businesses that advertise on Yelp, Yelp lists a tracking number that forwards calls.regularHoursRaw[].rawMinutesgives the opening and closing times as minutes from Monday 00:00. For Monday 5:00 PM to 10:00 PM it is[1020, 1320].isCurrentlyOpenandisClosedTodayare true or false at the time of the run.regularHoursLastUpdatedis display text, such as "Updated 1 month ago". It is not a date.authoritativeAttributes[].typeisbool(readboolValue),single(readsingleValue), ormulti(readmultiValue).photoTabsgives the photo counts that Yelp shows for each tab, such as Food, Drink, and Inside. These counts do not depend onincludePhotos.reviews[].createdAtis a UTC time.reviews[].localDateTimeis the local time of the business with its offset.reviews[].languageis the language of the review.translatedTextis Yelp's translation, ornull.reviews[].reactions[].typeis a reaction such asHELPFUL,THANKS, orLOVE_THIS.feedbackholds the Useful, Funny, and Cool votes.reviews[].author.eliteYearis the latest Elite year, ornull.isEliteAllStaris true for an Elite All-Star.reviews[].ownerReplyis the reply text of the business owner, ornull.reviews[].expertRecognitionis the reviewer's expert badge for the category of the business, such as "Bakery" with the number of reviews behind it.reviews[].previousReviewIdslists the IDs of the same reviewer's earlier reviews of this business. It is empty for most reviews.- Photos, videos, and reviews keep Yelp's order.
FAQ
How many reviews can I get?
There is no fixed limit. Set maxReviewsPerBusiness to 0 to get all the
reviews that Yelp recommends in the language you chose. 300 reviews take about
17 seconds. Yelp adds and removes reviews all the time, so your count can differ
by a few from the count on the Yelp page.
Why did I get fewer reviews than maxReviewsPerBusiness?
maxReviewsPerBusiness is an upper limit. The business can have fewer reviews.
languageCode is en by default, so reviews in other languages are not
included. Your ratings filter and your query can remove more. Yelp also
keeps some reviews out of the recommended list. Their number is in
notRecommendedReviewCount.
Why are many fields null?
Yelp blocked its business web page for every run that we tested with the default Apify Proxy. See "Why are many fields null?" above for the list of fields. Everything else is filled, and the run is not an error.
How do I find the URL, alias, or ID?
Open the business on Yelp. The URL is https://www.yelp.com/biz/ followed by the
alias. You can copy the whole URL. The 22-character ID is in the id field of
every result. A search or a first lookup gives you the IDs for later runs.
How do I get only the new reviews?
Yelp has no date filter. Run the Actor on a schedule with the default newest
order. Set maxReviewsPerBusiness higher than the number of new reviews between
two runs. Use reviews[].id to remove the reviews that you already have.
Why does a search return fewer businesses than maxSearchResults?
A search cannot return more businesses than Yelp lists for it. Yelp shows at
most 240 results for one search, and some of them are repeats. The Actor saves
each business once, so a full search usually gives about 220 businesses. A radius
removes the businesses outside it, and Yelp searches at most 25 miles around a
point. Try a larger radius, a wider location, or no category. To get more than
one search allows, split the area into smaller searches or run each searchSort.
Why do I see the same business twice?
One search saves each business once. A business can show twice when your
businesses list has it twice, or when you join the results of two searches.
Remove the repeats with the id field.
What happens if a business fails?
The Actor saves the other businesses and shows Failed to process with the
reason in the log. If every business fails, the run still ends as succeeded
with an empty dataset. A search that cannot complete stops the run with an error
and does not report an empty result.
Can I search and look up businesses in one run?
No. When you set a location, coordinates, or a search term, the Actor runs a
search and ignores businesses. Start one run for each.
A feature or field that I need is missing. What can I do?
Tell us in the Issues tab. Describe what you need and give an example business.
Where can I report a problem?
Open an issue in the Issues tab. Include the run ID and the input, so that we can reproduce it.
Similar Actors
- Yelp Reviews Scraper. Yelp reviews and business details from business URLs, aliases, or business IDs.
- Google Maps Scraper. Google Maps places with more than 120 fields, emails, and social profiles.
- TripAdvisor Reviews. TripAdvisor reviews for restaurants, hotels, attractions, and cruises.
- Trustpilot Reviews Scraper. Trustpilot reviews and business profiles.