Yelp Business Scraper - Most Comprehensive avatar

Yelp Business Scraper - Most Comprehensive

Pricing

from $0.08 / 1,000 places

Go to Apify Store
Yelp Business Scraper - Most Comprehensive

Yelp Business Scraper - Most Comprehensive

๐Ÿ”ฅ ~$0.5/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

Kai

Maintained by Community

Actor stats

1

Bookmarked

108

Total users

21

Monthly active users

2 days ago

Last modified

Share

Yelp Business Scraper

Collect Yelp business profiles as structured data. Look up known businesses or discover businesses by location, category, or keyword. Each result is one item in the default dataset.

Business profile data

  • Business identity, status, categories, rating totals, address, coordinates, contact details, and hours.
  • Attributes, services, owner profile, menu items, popular dishes, ordering links, and business notices.
  • Optional reviews with replies, reactions, tags, photos, and videos.
  • Optional business photo and video collections with captions and source order.

Choose how to find businesses

What you haveUseRequired input
A Yelp URL, alias, or encrypted IDDirect lookupbusinesses
A city, postal code, address, or neighbourhoodText-location searchlocation
A point on a mapCoordinate searchlatitude and longitude

Add searchTerm or category to narrow a search. Search mode also supports a radius and result sorting. Direct lookup keeps the supplied order and keeps repeated targets as separate results.

Add reviews or media

Add to each businessTurn onSet the maximum with
ReviewsincludeReviewsmaxReviewsPerBusiness
Business photos and videosincludePhotosmaxPhotosPerBusiness

Collect businesses

In Apify Console, select Input, paste an example, and select Run. Open the default Dataset when the run finishes.

Look up a business by URL:

{
"businesses": ["https://www.yelp.com/biz/gary-danko-san-francisco"]
}

Search by keyword and location:

{
"searchTerm": "pizza",
"location": "San Francisco, CA",
"maxSearchResults": 10
}

Search by coordinates:

{
"searchTerm": "coffee",
"latitude": 37.7749,
"longitude": -122.4194,
"searchRadius": 2,
"searchRadiusUnit": "km",
"maxSearchResults": 5
}

Include reviews, photos, and videos:

{
"businesses": ["WavvLdfdP6g8aZTtbBQHTw"],
"includeReviews": true,
"maxReviewsPerBusiness": 50,
"includePhotos": true,
"maxPhotosPerBusiness": 30
}

Input

Provide at least one direct business reference, or search by location. Search requires either a text location or both latitude and longitude; searchTerm is optional. For combined inputs, direct and search fields may be combined. When a search location is present, the Actor uses search mode. Otherwise, it processes businesses in the supplied order. You can supply a text location and coordinates together. category filters a search, but it does not start one.

ParameterTypeDefaultBehaviour
businessesstring[][]Yelp URLs, aliases, or 22-character encrypted business IDs. Duplicate references remain in input order and are emitted independently.
searchTermstringnoneOptional keyword, such as coffee, dentist, or a business name. A search also requires a location or a coordinate pair.
locationstringnoneCity, postal code, address, or neighbourhood. It is required unless you supply both coordinates.
latitudenumbernoneLatitude from -90 through 90. It requires longitude.
longitudenumbernoneLongitude from -180 through 180. It requires latitude.
categorystringnoneYelp category alias used as a search filter.
maxSearchResultsinteger20Maximum number of discovered businesses, from 1 through 1,000.
searchSortenumdefaultdefault, distance, rating, or review_count.
searchRadiusnumbernoneNon-negative search radius. A coordinate search keeps results at or within this distance. A value of 0 usually gives no result unless a business has the exact coordinates.
searchRadiusUnitenumkmkm or miles.
includePhotosbooleanfalseAdd business photos and videos. The input name is kept for compatibility.
maxPhotosPerBusinessinteger20Maximum combined photos and videos for each business. The value must be non-negative. 0 removes this item limit, but media collection stops after 100 source pages of up to 30 items each.
includeReviewsbooleanfalseAdd reviews to each business record.
maxReviewsPerBusinessinteger20Maximum reviews for each business. The value must be non-negative. 0 means unlimited.
sortByenumDATE_DESCDATE_DESC, DATE_ASC, RATING_DESC, RATING_ASC, or ELITES_DESC.
ratingsstring[] or number[]["1","2","3","4","5"]Use strings or numbers from 1 through 5. Duplicate selections are preserved. Output ratings are numbers.
querystring""Search within reviews. A non-empty query uses relevance order.
languageCodestringenLanguage value for the review request.
proxyConfigurationobject{"useApifyProxy":true}Connection settings for the run.

Complete input examples

Output

The default dataset contains one object for each business saved successfully. Repeated direct inputs are preserved in order. Within each search page, repeated business IDs are merged into their first occurrence. The Actor can keep the same business again if Yelp returns it on another page. reviews is present only when includeReviews is true. businessPhotos and businessVideos are arrays when includePhotos is true; otherwise, they are null.

Output at a glance

GroupMain fields
Identity and statusid, alias, name, rating, reviewCount, priceRange, isClosed
Location and contactformattedAddress, coordinates, phoneNumber, countryCode
HoursoperationHours, regularHoursRaw, upcomingSpecialHours, isCurrentlyOpen
Classificationcategories, categoryDetails, categoryAncestry, authoritativeAttributes
Business detailsspecialties, summary, bizOwnerProfile, menu, externalResources
MediabusinessPhotos, businessVideos, photoTabs, videoCarouselItems
Reviewsreviews, when includeReviews is on
Collection timescrapedAt

Root field types

JSON typeRoot fields
stringid, alias, name, scrapedAt
string or nullprimaryPhotoUrl, closedUntil, phoneNumber, meteredPhoneNumber, priceRange, specialties, summary, logo, countryCode, formattedPhone, regularHoursLastUpdated, containerBusiness
numberrating, reviewCount
number or nullyearEstablished, notRecommendedReviewCount, communityQuestionCount, postCount
boolean or nullisClosed, isClaimed, isYelpAdvertiser, isMultiloc, hasStorefrontAddress, messaging, onlineOrdering, isCommunityQuestionsEnabled, isConnectEnabled, isItemListSchemaEnabled, isCurrentlyOpen, isClosedToday, logoHasPurchased
number[]reviewCountsByRating
string[] or nullalternateNames, reviewHighlights
object[]reviewCountsByLanguage
object[] or nullcategories, healthInspections, verifiedLicenses, attributes, associatedSearches, popularDishes, authoritativeAttributes, videoCarouselItems, reviewSnippets, categoryDetails, regularHoursRaw, upcomingSpecialHours, photoTabs, categoryAncestry, costGuides, menu, businessPhotos, businessVideos
object or nulllocation, operationHours, ambiance, externalResources, yelpMenu, serviceArea, media, searchStats, menuVerbiage, consumerAlert, bizOwnerProfile, dataFreshness, categoryGroups, internalLinks, jobPricing, jobs, formattedAddress, businessOwnerVideo, partnerData, coordinates
optional object[]reviews

These unchanged fields are from a recorded Gary Danko result. This selected example is not a saved Dataset item:

{
"id": "WavvLdfdP6g8aZTtbBQHTw",
"alias": "gary-danko-san-francisco",
"name": "Gary Danko",
"rating": 4.5,
"reviewCount": 6136,
"reviewCountsByRating": [124, 216, 484, 1097, 4220],
"countryCode": "US",
"isCurrentlyOpen": false,
"scrapedAt": "2026-08-16T17:27:44.693Z"
}

Selected business fields

The five entries in reviewCountsByRating are counts for ratings 1 through 5. Other arrays keep source order. The example shortens long arrays.

Nested field reference

Optional root fields can be null, including the fields shown as null above. costGuides, upcomingSpecialHours, reviews[].reactions, reviews[].videos, and reviews[].previousReviewIds can be empty arrays. regularHoursLastUpdated can contain display text or be null. Availability can change between businesses and runs.

For example, a text-location search returned Updated 3 months ago in regularHoursLastUpdated for Third Wheel Coffee. Treat this value as display text, not as a date.

Review objects are nested under their business and include the parent business ID. Photo, video, and review rows keep source order.

Lookup and search behaviour

Search results

A valid search with no matches produces an empty dataset. Search matching, order, and field availability can change when Yelp updates its data.

If the search request cannot complete, the run stops instead of reporting the request as an empty result.

Direct batches

A direct batch with some valid and some invalid businesses keeps the valid records. If every business fails, the run still completes successfully with an empty dataset.

An encrypted-ID lookup can return fewer optional fields than a URL or alias lookup. Use a URL or alias when you need the broadest available profile.

Reviews and media

If a requested review or media section is not available, the Actor does not save that business as a complete result.