Skip to main content

Command Palette

Search for a command to run...

Give Claude Code a live business lead finder over MCP

Add one remote MCP server and Claude Code can pull real YellowPages listings, with phones and websites, into a table.

Updated
•4 min read•View as Markdown
Give Claude Code a live business lead finder over MCP
Z
Zebu Data builds and maintains web data tools on Apify: Google Maps, YellowPages, Yelp, Amazon, eBay, Zillow, Naver, Coupang, X and YouTube. Here we write hands-on tutorials on scraping, building lead lists, and giving AI agents live data over MCP.

Ask Claude Code for "plumbers in Austin with phone numbers" and it can only guess, because it has no live access to business directories. A remote MCP server fixes that in one command: the agent gets a tool that searches YellowPages and returns structured rows it can sort, dedupe and export. We (Zebu Data) build the scraper used in this post, and everything below comes from a real run on Oct 2, 2026.

What you need

  • Claude Code, or any MCP client that supports remote servers over streamable HTTP.
  • An Apify account. The scraper runs on Apify, and a free Apify account is enough to try it.

Step 1: Add the server

claude mcp add --transport http yellowpages-usa "https://mcp.apify.com/?tools=delicious_zebu/yellowpages-usa-business-lead-scraper"

The tools= parameter limits the server to the scrapers you list, so the agent can't wander off and call anything else. The first time a tool runs, you sign in to Apify, and usage is billed to your Apify account.

Step 2: Ask in plain English

Find plumbers in Austin, TX on YellowPages, just one results page, and give me a table with name, phone, website and rating. Skip sponsored duplicates.

What happens under the hood

This is the part that surprised us when we traced the real MCP traffic.

  1. Discovery. On tools/list the server exposes one tool per scraper (delicious_zebu--yellowpages-usa-business-lead-scraper) plus four helpers: get-actor-run, get-dataset-items, get-key-value-store-record and abort-actor-run.

  2. The call. The agent calls the scraper tool with:

    { "searchKeyword": ["plumbers"], "location": "Austin, TX", "maxPages": 1 }
    
  3. No answer yet. After about 30 seconds the tool returns early with status RUNNING, a run ID and a note that says "23 results so far", plus an instruction to poll with get-actor-run.

  4. Polling. The agent calls get-actor-run with the run ID. waitSecs is capped at 45, so a slower scraper takes a few polls. Our run finished in about 35 seconds.

  5. Reading rows. The agent calls get-dataset-items with the dataset ID and gets the rows as JSON.

If you build your own MCP client, plan for steps 3 and 4: long scrapes come back as a run you have to poll, not as a finished result.

The result

That single page returned 37 rows: 30 regular listings and 7 sponsored ones. Four of the sponsored rows repeat a regular listing, so there are 33 distinct businesses. A few regular rows, with phone numbers partly masked:

Business Phone Website Rating
Clarke Kent Plumbing (512) •••-••70 clarkekentplumbing.com 3★ (15 ratings)
Custom Plumbing Services (512) •••-••37 cpsaustin.com none
A&T Service Plumbing (512) •••-••83 atserviceplumbing.com none
Republic Pipeworks (512) •••-••24 none listed none

Across all 37 rows:

  • every row has a phone number,
  • 28 (76%) list a website, 2 of them small sites hosted by YellowPages on localsearch.com,
  • 18 (49%) show an email address,
  • 12 (32%) have a star rating, and 19 (51%) are claimed by the owner.

Tips from the run

  • Dedupe on source_url. Sponsored rows repeat regular listings on the same page. Tell the agent to keep one row per source_url.
  • A rating of "0" means no rating, not zero stars. Ask the agent to treat it as empty before it sorts.
  • Start with maxPages: 1. One page is about 30 regular listings. Check the output, then scale up.
  • Unclaimed listings are a lead signal of their own. If you sell local SEO, the 18 unclaimed businesses here are the obvious first calls.

Going further

The same scraper is part of our Local Business Leads bundle, listed in the official MCP Registry as io.github.zebudata/local-business-leads. It adds Google Maps, Yelp, YellowPages Canada and Australia, and a contact extractor that pulls emails and phones from business websites. For Claude Code there is also a plugin with skills for the full workflow: search several sources, dedupe, enrich, export a CSV.

/plugin marketplace add zebudata/claude-plugins
/plugin install zebu-local-leads@zebu-data

The scraper collects publicly available business information. You're responsible for using the data in line with applicable laws (e.g. GDPR, CAN-SPAM) and the website's terms.

Written with AI assistance and checked against real runs.

More from this blog