Yelp Ad Placement & Business Listings Scraper
Independent tool. Trademarks referenced on this page are the property of their respective owners and are used only to identify the public website this tool reads. No affiliation or endorsement.
Yelp Ad Placement & Business Listings Scraper
Scrape Yelp search results by category and location, and get back something no other Yelp scraper returns: which businesses are paying for ad placement. Returns business name, rating, reviews, categories, and contact fields for both organic and sponsored results — plus, for every sponsored card, the campaign ID, ad slot, placement type, and showcase flag behind it.
Yelp Ad Placement & Business Listings Scraper Features
- Extracts organic AND sponsored ("isAd") result cards from any Yelp search query
- Returns ad campaign ID, opportunity ID, placement type (e.g.
vertical_0,carousel_0), paid slot position, and showcase-ad flag for every sponsored listing — the field family no incumbent Yelp scraper ships - Tracks organic rank independently of paid rank, so you can measure how much of page one is actually for sale in a given category and metro
- Runs any combination of search categories and locations in one job, not one query at a time
- Paginates automatically up to a per-query page limit you set
- Includes ratings, review counts, categories, service-area text, response time, and photo thumbnails alongside the ad data
What Can You Do With Yelp Ad Intelligence Data?
- Ad agencies — benchmark a client's Yelp Ads spend and slot position against competitors in the same category and city
- Competing ad platforms — quantify how much of a market's local search real estate Yelp Ads controls, category by category
- Local businesses — see who's outbidding you for your own category before you call Yelp's sales team
- Sales teams selling into local business — a business paying for Yelp Ads is a demonstrated marketing spender with an active budget, which makes for a better prospect list than an undifferentiated directory dump
- Market researchers — track paid-vs-organic share of page one over time, by category and metro
How Yelp Ad Placement & Business Listings Scraper Works
- Give it one or more search categories (
plumbers,italian restaurants) and one or more locations (Austin, TX). - It runs every category against every location and pages through the results up to your configured page limit.
- Each result card is classified organic or ad. Ad cards carry the full campaign/placement/slot metadata; every card carries name, rating, reviews, categories, and the rest of the listing fields.
- Records land in your dataset as they're found — no need to wait for the whole run to finish before you can start reading.
Input
{
"categories": ["plumbers"],
"locations": ["Austin, TX"],
"maxPagesPerQuery": 2,
"maxItems": 50
}
| Field | Type | Default | Description |
|---|---|---|---|
categories |
array of strings | — (required) | One or more Yelp search terms, e.g. "plumbers", "italian restaurants". Every category is crawled against every location. |
locations |
array of strings | — (required) | One or more locations in "City, ST" form (or a locality name for non-US Yelp markets), e.g. "Austin, TX". |
maxPagesPerQuery |
integer | 3 | Maximum result pages (10 businesses/page) fetched per category+location combination. |
maxItems |
integer | 50 | Maximum number of business records saved across all queries. |
Yelp Ad Placement & Business Listings Scraper Output Fields
{
"biz_id": "dzm1bLeRUuD_BnPr7xeNXg",
"alias": "avai-contractor-del-valle",
"biz_url": "https://www.yelp.com/biz/avai-contractor-del-valle",
"name": "AVAI Contractor",
"is_ad": true,
"ad_campaign_id": "x4UWNWA9qmmHo2ZvHW4s8A",
"ad_opportunity_id": "bf584e7b8053a6f9",
"ad_placement": "vertical_0",
"ad_slot": 0,
"ad_placement_slot": 0,
"ad_is_showcase": false,
"ad_themed_name": null,
"organic_rank": null,
"rating": 5,
"review_count": 1,
"categories": ["Excavation Services", "Plumbing", "Septic Services"],
"price_range": null,
"phone": null,
"formatted_address": "5037 Lexington Meadow Ln",
"neighborhoods": [],
"service_area": [],
"response_time": "1 day",
"photo_urls": ["https://s3-media0.fl.yelpcdn.com/bphoto/R7lwqPJcFNlrmf8-vZvYkQ/ls.jpg"],
"search_category": "plumbers",
"search_location": "Austin, TX",
"search_page": 1,
"scraped_at": "2026-08-10T05:41:28.284Z"
}
| Field | Type | Description |
|---|---|---|
biz_id |
string | Yelp's internal business ID — the stable primary key |
alias |
string | The business's public URL slug |
biz_url |
string | Canonical yelp.com/biz/ URL |
name |
string | Business name |
is_ad |
boolean | True for a paid Yelp Ads placement, false for an organic result |
ad_campaign_id |
string | The Yelp Ads campaign behind this placement (ads only) |
ad_opportunity_id |
string | The ad auction/opportunity ID tied to this search request (ads only) |
ad_placement |
string | Ad slot type, e.g. vertical_0, carousel_0 (ads only) |
ad_slot |
integer | Paid rank position within the placement (ads only) |
ad_placement_slot |
integer | Sub-slot position within the placement (ads only) |
ad_is_showcase |
boolean | True for Yelp's premium showcase ad format (ads only) |
ad_themed_name |
string | Themed ad campaign name, when set (ads only, often null) |
organic_rank |
integer | 1-based rank among organic results only — independent of ad_slot |
rating |
number | Star rating (0-5), when shown on the listing |
review_count |
integer | Number of reviews, when shown on the listing |
categories |
array of strings | Category labels shown on the card |
price_range |
string | Yelp price symbol ($-$$$$), when present |
phone |
string | Phone number, when present in the listing (ad listings mostly) |
formatted_address |
string | Street address, when present in the listing (ad listings mostly) |
neighborhoods |
array of strings | Neighborhood names, when present |
service_area |
array of strings | Service-area description, for businesses with no public storefront |
response_time |
string | Yelp's displayed typical quote-response time, e.g. "5 hrs" |
photo_urls |
array of strings | Thumbnail photo URLs from the listing card |
search_category |
string | The input category this record was found under |
search_location |
string | The input location this record was found under |
search_page |
integer | 1-based result-page number |
scraped_at |
string | ISO-8601 scrape timestamp |
Resuming a large crawl
Every run emits a resumeCursor in its Output. If a large crawl stops before it finishes — because it hit maxItems, your spend cap (maxTotalChargeUsd), or was aborted — start a new run with the same input plus that resumeCursor to continue from where it left off. The crawl resumes from the queued work the previous run didn't reach.
- You are not re-charged for records the earlier run already delivered.
- Resume within your account's run-retention window — on the free tier, roughly your 10 most recent runs. Once the source run is pruned, its
resumeCursoris no longer valid. resumeCursoris opaque — supply it unmodified.
FAQ
How do I scrape Yelp ad placements?
Give Yelp Ad Placement & Business Listings Scraper a category and a location and run it. Every result card comes back tagged is_ad: true or false, and every ad card carries its campaign ID and paid slot position — no separate ad-library lookup required.
What data can I get from Yelp search results?
Business name, rating, review count, categories, address, price range, and photos for organic and sponsored results alike — plus campaign ID, ad slot, placement type, and showcase status for anything Yelp is running as an ad.
Can I run multiple categories and cities in one job?
Yes. categories and locations both accept arrays, and every category is crawled against every location in the same run.
Do I need a Yelp account or API key?
No. Point it at a category and a location and it returns results — no login, no API key.
How much does this cost to run?
Priced per business record returned, plus a per-run start fee. Check the Pricing tab on this actor's page for current rates.
Need More Features?
Need custom fields, filters, or a different target site? File an issue or get in touch.
Why Use Yelp Ad Placement & Business Listings Scraper?
- Sees what other Yelp scrapers don't — campaign ID, ad slot, and showcase status for every sponsored card, not just name and rating
- One job, many queries — feed it a list of categories and a list of cities and it covers every combination, so you're not scripting a loop around a single-query scraper
- Built for both sides of the trade — organic and paid rank land in the same row, so agencies, competitors, and the businesses themselves can all read the same dataset