Yelp Scraper: Business Data, Reviews, Hidden Reviews & Menus avatar

Yelp Scraper: Business Data, Reviews, Hidden Reviews & Menus

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Yelp Scraper: Business Data, Reviews, Hidden Reviews & Menus

Yelp Scraper: Business Data, Reviews, Hidden Reviews & Menus

Scrape Yelp business profiles, ratings, hours, phone, website and photos, plus every review, including the not recommended and removed reviews Yelp hides from the public page. Search any city by keyword, pull full menus with prices. No Yelp account or proxy setup. $3 per 1,000 rows.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Sourabh Kumar

Sourabh Kumar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

Share

Scrape any Yelp business: search by city, reviews, photos, hours & contacts

One actor for the whole Yelp page. Pull business profiles, every review, the reviews Yelp hides from the public feed, keyword search, full photo galleries and menus with prices.

$3.00 per 1,000 rows. No proxy setup, no browser, no Yelp account needed.

Works on any Yelp business in any country: United States, Canada, United Kingdom, France, Germany, Australia and the rest.

The reviews Yelp hides

Yelp does not show every review it has. A large share get pushed into a "not recommended" section that almost nobody clicks, and a second set gets removed outright for breaking Yelp's terms of service. Neither is counted in the star rating on the page.

The numbers are not small. One San Francisco restaurant shows roughly 12,900 public reviews. Underneath it sits another 4,400 or so marked not recommended, plus about 1,800 Yelp removed. If you are tracking a brand, that is a third of the conversation you cannot see.

This actor returns both sets, to full depth, with a reviewStatus field telling you which is which. Most Yelp scrapers only warn you that these reviews exist.

What you can pull

ModeWhat you get
BusinessRatings, the full star breakdown, price range, categories, phone, website, address, coordinates, opening hours, whether it is open right now, amenities, health inspection score, popular dishes with prices
ReviewsEvery public review with text, star rating, date, photos, reactions, the reviewer's profile, and the owner's reply
Hidden reviewsThe not recommended set and the removed set, both to full depth
SearchKeyword plus location, with each result's name, rating, review count, price, address and rank
PhotosThe whole gallery, not a 25 photo preview, with captions, uploader and dimensions
MenuSections, items, descriptions and prices, including items priced by size

Every row carries a recordType field, so you can run mixed jobs and filter afterwards.

Top use cases

Reputation monitoring that sees the whole picture

Public reviews tell you what Yelp decided to show. The hidden sets tell you what it filtered out, and those skew angry: sorted by rating, the first page is almost always one star. For a brand tracking sentiment, that is the half worth reading. Schedule it with Only new reviews and each run returns just what appeared since last time.

Local lead generation

Search a category and a city, get names, ratings, review counts, price bands and addresses in one pass. Turn on Add full business details and each row also carries the phone number, website and opening hours. No second run, no matching step.

Competitor and pricing research

Menu mode returns a competitor's whole menu with prices, including the ones priced by size, so "Bowl $10.00, Cup $7.00" comes through as both numbers rather than the cheaper one. Business mode adds the popular dishes Yelp computes itself, with prices and how many people mentioned them.

Franchise and multi-location audits

Feed a list of business URLs and get one row each: hours, categories, amenities, health score and whether the phone and website are still right. Service area businesses like plumbers return their coverage area instead of a storefront address, so nothing comes back blank.

Review datasets for AI and analysis

Reviews come with the reviewer's history, Elite status and the exact local timestamp, plus the owner's reply where there is one. The hidden sets are the interesting part: text that never reached the public page.

Input examples

Business details. Paste any Yelp business URL.

{
"mode": "business",
"businesses": [
"https://www.yelp.com/biz/brendas-french-soul-food-san-francisco-6"
]
}

Reviews, newest first. maxReviewsPerBusiness caps each business; leave it at 0 for everything.

{
"mode": "reviews",
"businesses": [
"https://www.yelp.com/biz/marines-memorial-club-and-hotel-san-francisco-4"
],
"sortBy": "DATE_DESC",
"maxReviewsPerBusiness": 200
}

Only one star and two star reviews, to find the complaints fast.

{
"mode": "reviews",
"businesses": [
"https://www.yelp.com/biz/brendas-french-soul-food-san-francisco-6"
],
"ratings": ["1", "2"],
"maxReviewsPerBusiness": 100
}

Search reviews for a word. Useful for "refund", "rude", "food poisoning" or a dish name.

{
"mode": "reviews",
"businesses": [
"https://www.yelp.com/biz/gary-danko-san-francisco"
],
"query": "risotto",
"maxReviewsPerBusiness": 50
}

The hidden reviews. Both sets come back together, tagged by reviewStatus.

{
"mode": "notRecommendedReviews",
"businesses": [
"https://www.yelp.com/biz/brendas-french-soul-food-san-francisco-6"
],
"maxReviewsPerBusiness": 500
}

Keyword search with full business details merged in.

{
"mode": "search",
"searchTerms": ["coffee", "espresso bar"],
"location": "Springfield, MO",
"enrich": true,
"maxItems": 100
}

Photos and menu.

{
"mode": "photos",
"businesses": [
"https://www.yelp.com/biz/gary-danko-san-francisco"
],
"maxReviewsPerBusiness": 300
}
{
"mode": "menu",
"businesses": [
"https://www.yelp.com/biz/sotto-mare-san-francisco-4"
]
}

Only reviews you have not seen before. Run it on a schedule and each run returns the new ones.

{
"mode": "reviews",
"businesses": [
"https://www.yelp.com/biz/brendas-french-soul-food-san-francisco-6"
],
"delta": true,
"deltaStoreName": "yelp-delta"
}

Output examples

Real rows from real runs. Where a value was too long to show, it is cut off at the end and marked with an ellipsis. Nothing is reordered, and no field is removed from the middle of a value.

Business mode, one row per business:

{
"recordType": "business",
"businessEncid": "lJAGnYzku5zSaLnQ_T6_GQ",
"businessAlias": "brendas-french-soul-food-san-francisco-6",
"businessName": "Brenda's French Soul Food",
"businessUrl": "https://www.yelp.com/biz/brendas-french-soul-food-san-francisco-6",
"scrapedAt": "2026-09-15T16:03:08.077Z",
"rating": 4.2,
"reviewCount": 12864,
"ratingCount1": 351,
"ratingCount2": 487,
"ratingCount3": 1465,
"ratingCount4": 4199,
"ratingCount5": 6366,
"priceRange": "$$",
"categories": "Breakfast & Brunch, Southern, Cajun/Creole",
"phone": "(415) 345-8100",
"website": "http://frenchsoulfood.com",
"websiteIsTrusted": true,
"addressLine1": "652 Polk St",
"addressFormatted": "652 Polk St\nSan Francisco, CA 94102",
"city": "San Francisco",
"regionCode": "CA",
"postalCode": "94102",
"country": "US",
"latitude": 37.78293189,
"longitude": -122.41892117,
"hasStorefrontAddress": true,
"serviceArea": null,
"hoursMonday": "8:00 AM - 3:00 PM",
"hoursThursday": "8:00 AM - 8:00 PM",
"isCurrentlyOpen": true,
"isClosedPermanently": false,
"amenities": "Takes reservations | Offers delivery | Offers take-out | Vegan options | Limited vegetarian options | Wheelchair accessible | ADA-compliant main entrance | No steps or stairs | ...",
"attributes": "accepts_credit_cards | caters | corkage | gender_neutral_restrooms | offers_contactless_delivery | parking=street | wheelchair_accessible",
"primaryPhotoUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/isd_PODFOZ03BI7L8K-Now/l.jpg",
"healthScore": "Pass",
"healthScoreDate": "2026-01-30T08:00:00.000Z",
"popularItems": "One Crawfish Beignet ($6.00) | Crawfish Beignets Order ($18.00) | Fried Chicken Benedict ($23.00) | French Toast ($15.00) | Crispy Pork Belly ($25.00) | Chocolate Beignets Order ($15.00) | ...",
"popularItemsLabel": "Popular Dishes"
}

Reviews mode, one row per review. This one has an owner reply:

{
"recordType": "review",
"businessName": "Marines' Memorial Club & Hotel",
"businessUrl": "https://www.yelp.com/biz/marines-memorial-club-and-hotel-san-francisco-4",
"scrapedAt": "2026-09-15T16:02:56.310Z",
"reviewId": "1hjKwXoA5-v-FM1QOtY3FA",
"reviewUrl": "https://www.yelp.com/biz/marines-memorial-club-and-hotel-san-francisco-4?hrid=1hjKwXoA5-v-FM1QOtY3FA",
"rating": 5,
"text": "My, oh my!!! We had such an incredibly good time at the Marines' Memorial Club and Hotel last weekend!!! ...",
"language": "en",
"publishedAtLocal": "2026-06-28T14:49:13-07:00",
"isRecommended": true,
"wasUpdated": false,
"helpfulCount": 0,
"thanksCount": 0,
"loveThisCount": 1,
"ohNoCount": 1,
"photoCount": 0,
"photoUrls": null,
"ownerReplyText": "Robin, Thank you so much for the very kind review. We hope to see you again soon!",
"ownerReplyAt": "2026-04-02T07:33:19-07:00",
"ownerReplyBy": "Michael A.",
"ownerReplyRole": "MANAGER",
"reviewerId": "8YTTNVMNe0tQSW-bSOlGJw",
"reviewerName": "Anne H.",
"reviewerUrl": "https://www.yelp.com/user_details?userid=8YTTNVMNe0tQSW-bSOlGJw",
"reviewerLocation": "Poulsbo, WA",
"reviewerReviewCount": 1,
"reviewerFriendCount": 0,
"reviewerPhotoCount": 0,
"reviewerIsElite": false,
"reviewerEliteYear": null
}

Hidden reviews, one row per review, tagged with reviewStatus:

{
"recordType": "notRecommendedReview",
"businessName": "Brenda's French Soul Food",
"businessUrl": "https://www.yelp.com/biz/brendas-french-soul-food-san-francisco-6",
"scrapedAt": "2026-09-15T16:02:44.315Z",
"reviewId": "ULPIC9f1WuqHK--cR8ZtCA",
"reviewStatus": "notRecommended",
"isRecommended": false,
"rating": 1,
"text": "They DO NOT have the pulled pork sandwich anymore. The whole reason I came to this place. Will no longer be stopping by for any reason.",
"publishedAtLocal": "2026-09-03T11:23:40-07:00",
"reviewerId": "4--T71EdnMfQMuaEMry-CQ",
"reviewerName": "Trisha B.",
"reviewerLocation": "San Jose, CA",
"reviewerReviewCount": 40,
"reviewerFriendCount": 1,
"reviewerPhotoCount": 16,
"reviewerIsElite": false
}

Search mode, one row per result:

{
"recordType": "searchResult",
"businessEncid": "8RYC23YQSEOIKaNEoC0c1A",
"businessAlias": "architect-coffee-springfield",
"businessName": "Architect Coffee",
"businessUrl": "https://www.yelp.com/biz/architect-coffee-springfield",
"scrapedAt": "2026-09-15T16:02:30.722Z",
"searchTerm": "coffee",
"searchLocation": "Springfield, MO",
"resolvedLocation": "Springfield, MO",
"searchRank": 1,
"searchSlot": 1,
"isAd": false,
"snippet": "This coffee shop has vibe, great coffee, and great food. Farm fresh eggs, great Pastries, and one of...",
"photoUrls": "https://s3-media0.fl.yelpcdn.com/bphoto/YpfeLN4PSftOXMDRMrxMxw/ls.jpg",
"rating": 4.8,
"reviewCount": 84,
"priceRange": "$$",
"categories": "Coffee & Tea",
"addressLine1": "1604 E Republic Rd",
"city": "Springfield",
"neighborhood": null
}

resolvedLocation is the place Yelp actually searched. Type "Springfield" and Yelp picks one; this field tells you which, so you are never guessing whether you got Missouri or Illinois.

Photos mode, one row per photo:

{
"recordType": "photo",
"businessName": "Gary Danko",
"businessUrl": "https://www.yelp.com/biz/gary-danko-san-francisco",
"scrapedAt": "2026-09-15T16:02:42.790Z",
"photoId": "5dbjkeTld05HumeToIAhRQ",
"photoUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/5dbjkeTld05HumeToIAhRQ/o.jpg",
"thumbnailUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/5dbjkeTld05HumeToIAhRQ/348s.jpg",
"caption": "Matcha cake",
"width": 2000,
"height": 1500,
"uploadedBy": "Rie K.",
"uploadedAt": "2022-10-16T01:35:42Z",
"keywords": "dessert, food",
"isFromReview": true,
"reviewRating": 4,
"format": "JPEG",
"isFamilyFriendly": true
}

Menu mode, one row per item. Note the item priced two ways:

{
"recordType": "menuItem",
"businessName": "Sotto Mare",
"businessUrl": "https://www.yelp.com/biz/sotto-mare-san-francisco-4",
"scrapedAt": "2026-09-15T16:02:59.683Z",
"menuSection": "Appetizers",
"itemName": "Oysters on Half Shell",
"itemPrice": "2.00",
"itemPriceVariants": "West Coast: $2.00 | East Coast: $3.00",
"itemCurrency": "USD",
"itemReviewCount": 16,
"itemPhotoCount": 110,
"itemPhotoUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/rRn9hvJb2n8Dvc3XEWhDXg/60s.jpg",
"itemDescription": null,
"itemUrl": "https://www.yelp.com/menu/sotto-mare-san-francisco-4/item/oysters-on-half-shell"
}

How much does Yelp Scraper cost?

$3.00 per 1,000 rows, plus $0.005 each time a run starts.

A row is one business, one review, one hidden review, one search result, one photo or one menu item.

PlanWhat your monthly credit buys
Free ($5)about 1,660 rows
Starter ($29)about 9,660 rows

Two things that are easy to get wrong elsewhere, and are worth knowing:

  • Rows that report a problem are never charged. Feed a dead URL and you get a row explaining what happened, for free.
  • The same business supplied twice is charged once. Paste a URL, an alias and an ID for one place and you pay for one.

Every mode is available on every plan. Nothing is held back for paid users.

Limitations

Straight answers, so nothing surprises you after you have paid.

  • Removed reviews have no text. Yelp strips the body when it removes a review for breaking its terms, and often the reviewer's name too. You get the rating, the date and the reviewer's profile. The not recommended set does keep its full text.
  • Hidden reviews come lowest rated first. That is Yelp's own order and it cannot be changed. If you cap at 20 you will get 20 one star reviews, which is usually what people want, but it is not a random sample.
  • Search returns about 200 businesses per query. Yelp caps a search at 240 result slots and repeats some listings inside them, so a full walk usually yields a little over 200 distinct businesses. The run tells you when it hit that ceiling. For wider coverage, run more specific searches rather than deeper ones.
  • Sorting by Elite reviewers fails on very large businesses. Yelp's own website breaks on that sort once a business has several thousand reviews. It works fine below that. Any other sort works at any size.
  • Searching reviews for a word overrides the sort and star filters. Yelp returns text matches in its own relevance order. The run warns you when this happens.
  • Menus exist only where the business published one on Yelp. Most do not. Asking for a menu that is not there gives you a clear row saying so, at no charge. Permanently closed businesses often still have their last menu online.
  • Photo and review counts move. Yelp recounts constantly, so a total captured a minute apart can differ by a few.

Frequently asked questions

Do I need a Yelp account or an API key? No. Everything here is public data from public pages.

Do I need to configure a proxy? No. Proxy handling and retries are built in and covered by the row price.

How many reviews can I get from one business? All of them. There is no depth cap, and no page limit. Businesses with several thousand reviews return every one, and the run reconciles its count against the total Yelp reports.

Can I get only new reviews since my last run? Yes. Set delta to true and give a deltaStoreName. Each run then returns only reviews it has not delivered before.

What is the difference between "not recommended" and "removed" reviews? Not recommended reviews were filtered by Yelp's software but are still on the site, and they keep their full text. Removed reviews were taken down for breaking Yelp's terms, and Yelp deletes the text. Both arrive in the same mode, labelled by reviewStatus.

Which countries does it work in? All of them. Paste a Yelp URL from any country. Addresses, phone numbers and currencies come back in local format.

What happens if I paste a bad URL? You get a row explaining the problem and the run finishes normally. Bad input never fails the run and is never charged.

How is this priced? $3.00 per 1,000 rows plus $0.005 per run start. Errors and duplicates are not charged.

Your feedback

Found a bug, or need a field that is not here? Open an issue and it reaches a person: console.apify.com/actors/WuQhGHiEIjUOjwXCD/issues

This actor collects publicly available information from Yelp, the same content any visitor can see without logging in. It does not collect private data and does not require an account.

You are responsible for how you use what you collect. Review text and reviewer names are personal data in many places, so if you store or publish them, make sure you have a lawful basis under GDPR, CCPA or your local equivalent. If you are unsure, take legal advice before you run this at scale.