OrbTop

Yelp Ad Placement & Business Listings Scraper

LEAD GENERATIONBUSINESS

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

  1. Give it one or more search categories (plumbers, italian restaurants) and one or more locations (Austin, TX).
  2. It runs every category against every location and pages through the results up to your configured page limit.
  3. 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.
  4. 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 resumeCursor is no longer valid.
  • resumeCursor is 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