Yelp Business Profile, Hours & Menu Extractor avatar

Yelp Business Profile, Hours & Menu Extractor

Pricing

from $0.49 / 1,000 results

Go to Apify Store
Yelp Business Profile, Hours & Menu Extractor

Yelp Business Profile, Hours & Menu Extractor

Search Yelp or fetch specific business URLs for profile data, hours, services, photo galleries, owner replies, coordinates, and reviews with reaction counts.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

Dataspryva

Dataspryva

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

7 minutes ago

Last modified

Features

Limited permissions

Share

Yelp business pages are useful for more than star ratings. This actor collects the profile itself — address, phone, website, categories, price level, weekly opening hours — plus the published menu with dish names, descriptions, prices, and sections. Reviews, photo galleries, owner replies, and search metadata are included alongside the profile so one run can feed a directory, a competitive analysis, or a menu-price monitor.

What it collects

  • Two ways to start. Search Yelp by keyword and location, or paste business URLs, aliases, or 22-character Yelp business IDs.
  • Full business profile. Name, stable business ID, alias, categories, business type, cuisine, address, coordinates, price level, phone, website, claim status, and a short description.
  • Weekly hours. Opening hours for each day of the week, including split shifts such as lunch and dinner service.
  • Menus. Section names, dish names, descriptions, prices, currencies, and item URLs from the business's public Yelp menu. Menus are optional and appear only when the business has published one.
  • Photos. Up to 100 gallery photos per business, with a legacy photoCategories grouping for older integrations.
  • Reviews. Rating, text, author, date, language, photos, Elite status, reaction counts, and owner replies. The review feed is paged, so you can collect far more than the handful Yelp shows on the first screen.
  • Search context. Organic rank, sponsored flag, the query and location that found each business, and the source page.
  • Honest status rows. Missing pages, blocks, and data-contract changes become explicit records instead of a silently empty dataset.
  • No empty placeholders. Fields Yelp does not provide are omitted at every depth.

Data source and access

The actor reads Yelp's public search pages, public menu pages, and the same unauthenticated GraphQL endpoint the website uses. It needs no Yelp account, login, cookie, or API key. When Yelp blocks a request, the actor retries through Apify Proxy automatically; you do not have to configure a proxy.

Output

Each business is one row with recordType: "business". Reviews and menu items are nested arrays.

Business fields

FieldDescription
businessId / encIdYelp's 22-character business ID
aliasYelp URL slug, for example prince-street-pizza-new-york-2
nameBusiness name
typeBusiness type derived from Yelp's root category, e.g. Restaurant
categoriesCategory titles
categoryAliasesYelp category aliases
cuisineCuisine-style categories for restaurants
addressNested address object: streetAddress, addressLocality, addressRegion, postalCode, addressCountry, formatted
city, state, zip, countryFlattened address components
lat, lngCoordinates
coordinates{ latitude, longitude } legacy object
ratingAverage star rating
reviewCountReview total shown on the profile
reviewsTotalReviews available in the public feed
price / priceRangePrice level such as $ or $$
phoneBusiness phone
websiteBusiness website
hoursWeekly hours keyed by short day name, each value an array of time ranges
photos / imagesGallery photo URLs
photoCategories{ "all": [...] } compatibility grouping
menuMenu items (see below)
isClosedWhether Yelp marks the business as closed
isClaimedWhether the profile is claimed
claimStatusclaimed or unclaimed
descriptionShort Yelp summary
reviewsReview objects
ownerRepliesOwner replies flattened from reviews: reviewId, reviewDate, reply, replyDate, author
url / directUrlYelp business page URL
bizIdLegacy alias of alias
aggregatedRatingLegacy rating as text
searchRankOrganic position in search mode
sponsoredWhether the card first appeared as sponsored
searchQuery, searchLocation, searchCategorySearch context
sourceUrlPage the record came from
scrapedAtISO timestamp

Each entry in menu contains:

FieldDescription
sectionMenu section, e.g. Pizza, Desserts, Drinks
nameDish name
descriptionDish description when published
priceDisplay price, e.g. $38.50
priceValueNumeric price for sorting and comparison
priceCurrencyISO currency code, e.g. USD
urlYelp menu-item URL

Reviews

Review objects keep both the current field names and the older pro-actor aliases:

id/reviewId, rating, text, author/reviewerName, authorId, authorUrl, authorLocation, authorReviewCount, date, dateLocal, photos, ownerReply, elite, eliteYear, language, isFirstReview, checkInCount, reactions, isUsefulCount, isFunnyCount, isCoolCount.

Status rows

A row with recordType: "status" explains anything that prevented collection:

  • status: not_found, blocked, api_drift, no_results, or invalid_input
  • message: plain-language explanation
  • sourceUrl, businessId, operation, and documentId when relevant
  • scrapedAt

Filter on recordType before loading business rows.

Input

FieldTypeDefaultDescription
modestringsearchsearch for keyword discovery, direct for specific businesses
searchQueriesarray[]Keywords for mode=search; each is combined with each location
locationsarray[]Cities, neighborhoods, or ZIP codes for mode=search
startUrlsarray[]Yelp search URLs in search mode, or business URLs, aliases, and IDs in direct mode
categoriesarray[]Yelp category names or aliases
sortBystringrecommendedrecommended, rating, or reviewCount
pricearray[]$, $$, $$$, $$$$
minRatingnumber0Drop businesses below this rating
maxItemsinteger50Maximum business rows (1–500)
includeReviewsbooleantrueTurn off to skip the review feed
maxReviewsPerBusinessinteger20Reviews per business (1–1000)
reviewSortstringDATE_DESCReview ordering
reviewRatingsarray["5","4","3","2","1"]Star ratings to include
reviewLanguagestringenReview language, or all for every language Yelp reports
includeMenubooleantrueFetch and parse published menus
includeHoursbooleantrueInclude weekly hours
maxPhotosinteger100Gallery photos per business (0–100)
proxyConfigurationobjectautomaticOptional route override; no proxy setup is required

Legacy input keys

Saved tasks from the previous version keep working. The actor reads the old keys in code and maps them to the new options; they are not shown in the input form:

Old keyNew option
searchTermssearchQueries
searchQuery / searchSortsearchQueries / sortBy
locations / locationlocations
directUrls / searchUrlsstartUrls
searchLimitmaxItems
reviewLimitmaxReviewsPerBusiness; 0 turns reviews off
searchPrice / searchCategoryprice / categories
fetchMenuincludeMenu
fetchHoursincludeHours
fetchPhotos / maxPhotosmaxPhotos
proxyproxyConfiguration
runTimeoutSecsIgnored; row caps bound each run

Example: search with menus and hours

{
"mode": "search",
"searchQueries": ["pizza"],
"locations": ["New York, NY"],
"minRating": 4,
"maxItems": 10,
"includeMenu": true,
"includeHours": true,
"maxReviewsPerBusiness": 10
}

Example: exact businesses with deep reviews

{
"mode": "direct",
"startUrls": [
"https://www.yelp.com/biz/prince-street-pizza-new-york-2",
"https://www.yelp.com/biz/joes-pizza-new-york-148"
],
"includeMenu": true,
"maxReviewsPerBusiness": 100,
"reviewSort": "RATING_DESC",
"maxPhotos": 100
}

Example: profiles and menus only

{
"mode": "search",
"searchQueries": ["ramen"],
"locations": ["Seattle, WA"],
"includeReviews": false,
"maxItems": 25
}

Use cases

  • Build a local-business directory with hours, contact data, and coordinates.
  • Monitor menu prices and dish changes across restaurant competitors.
  • Compare ratings, review volume, and price levels in a market.
  • Export reviews with owner responses for sentiment and service analysis.
  • Enrich CRM or mapping data with stable Yelp business IDs.
  • Track search ranking and sponsored placement for target keywords.

FAQ

Do I need a proxy or a Yelp account? No. The actor uses public pages and an unauthenticated endpoint. It routes through Apify Proxy automatically when Yelp blocks a request, and you can leave proxyConfiguration empty.

Why is menu missing for some restaurants? Yelp only publishes menus for businesses that added one, mostly US restaurants. The actor checks the public menu page and omits menu when there is nothing to parse.

How many search results can I get? Yelp caps a single search at 240 results, ten per page. maxItems can go up to 500 across multiple queries, locations, or direct URLs.

How deep can reviews go? Up to 1,000 per business. The feed is requested in pages of 49, so deeper runs use more requests.

Why is reviewsTotal lower than reviewCount? Yelp's public review feed excludes reviews it does not recommend, so the feed total can be slightly below the profile count.

Are hours and menus live? Yes. Every run reads the current public page and menu. Yelp does not expose historical hours or menu versions.

What happens when Yelp changes its format? The actor writes an api_drift status row with the operation and source URL instead of returning an empty dataset. The run status message also reports it.

Can I search outside the US? Yes. Yelp search and business pages work across its supported markets. Menu coverage is lower outside the US.

Limitations

  • A single search stops at Yelp's 240-result ceiling. Split by neighborhood or category for more.
  • The public review feed leaves out not-recommended reviews.
  • Menus are published voluntarily; businesses without a menu simply have no menu key.
  • Amenity/service lists from the old page layout are not part of Yelp's public GraphQL contract and are not included.