Yell.com Scraper: UK Business Phones, Emails & Websites
Pricing
from $1.00 / 1,000 business listings
Yell.com Scraper: UK Business Phones, Emails & Websites
Scrape Yell.com by trade and town: business name, phones, website, address, rating and services. Turn on emails to find each business's address from its own website (Yell does not publish emails), charged only when found. Pay per business.
Pricing
from $1.00 / 1,000 business listings
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
9 hours ago
Last modified
Categories
Share
From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.
Type a trade and a UK town, for example plumbers in Leeds, and get one row per business that Yell.com lists: name, phone in international format, address and postcode, website, Yell rating, the services on its Yell card and the link to its Yell page. Turn on Find emails and the actor also reads each business's own website for an email address, because Yell does not publish emails. You pay for an email only when one is found and delivered.
Why choose this actor?
- Emails from the business's own website, charged only when found. In our proof run (restaurants in London, 28 Sep 2026) 9 of 20 businesses came back with an email, all read from their own websites. The other 11 were delivered and charged as businesses only. A chain's shared inbox found on several rows is charged once per run.
- Yell's Cloudflare wall is handled for you. Every Apify datacenter connection we tried got Yell's Cloudflare challenge, so the actor reads search pages through Apify's unblocking proxy, about 11 seconds a page of 25 businesses, and that cost is in the price. In the proof run the one search page passed on the first attempt. Pages Yell refuses are listed in the run summary and never charged.
- One clean row per business, no account. An advert that repeats an organic card is merged into one row, the same business listed under a second Yell id (same name, a shared phone or website) is delivered once, a business found by two of your searches is delivered and charged once, and phones come in international format such as
+44 20 3808 8034. No Yell account, cookies or API key.
Part of The Mine Works Leads and business directories family: B2B Leads Finder, Skip Trace Lookup, Google Maps Email Scraper, JustDial Scraper, 2GIS Places Scraper, IndiaMART Scraper.
Try it in one minute
Paste this input into the JSON tab and press Start. It returns the first 10 plumbers Yell lists for Leeds, from one results page, without emails:
{"queries": ["plumbers"],"locations": ["Leeds"],"maxResultsPerSearch": 10}
You can say what you want in two ways, and mix them in one run:
- Queries and locations (
queries,locations): trades as you would type them on Yell, such asplumbers,solicitorsordentists, and towns, cities, regions or postcode districts such asLondon,Leeds,West YorkshireorN1. Yell works out the county itself (Leeds is read as Leeds, West Yorkshire). A full postcode such asSW1A 1AAis searched as its district (SW1A), because Yell has no page for a full postcode; when Yell has no page for a place, the run summary says so and nothing is charged. Every query is searched in every location. Leavelocationsempty to search the whole UK. - Search pages (
startUrls): a Yell results page copied from your browser, either the short formhttps://www.yell.com/s/plumbers-london.htmlor ahttps://www.yell.com/ucs/UcsSearchAction.do?keywords=...&location=...link. TheUcsSearchAction.dolink itself is not opened, because Yell's robots.txt disallows it: its trade and town are read from it and Yell's own/s/page for them is read instead (other settings in the link, such as a sort order, are not kept). Business pages (/biz/...) are not accepted.
API and agent callers can also use other common field names: query, keyword, keywords or searchTerms for queries, location, where or city for locations, urls for search pages, and maxResults or maxItems for the limit.
Apify's free plan includes $5 of credit every month, which covers about 2,400 businesses at this actor's Free plan price with emails off ($0.002 a business plus $0.005 a run, in runs of 250), or about 300 businesses with emails on at the rate of our proof run, about 140 of them with an email.
Copy to your AI assistant
themineworks/yell-business-email-scraper on Apify. Searches Yell.com, the UK business directory, by trade and town and returns one row per business with name, phones, address, postcode, website, Yell rating and services, plus an optional email read from the business's own website. Call ApifyClient("TOKEN").actor("themineworks/yell-business-email-scraper").call(run_input={"queries": ["plumbers"], "locations": ["Leeds"], "maxResultsPerSearch": 50, "includeEmails": true}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: queries (array of trades such as "plumbers") unless startUrls is given. Optional: locations (array of towns, regions or postcode districts; empty = the whole UK), startUrls (Yell search pages), maxResultsPerSearch (integer 1 to 1000, default 30; Yell serves at most 250 per search), includeEmails (boolean, default false), verifyEmailDomain (boolean, default true). Rows with _type "info" are run notes, never billed. Full spec: GET https://api.apify.com/v2/acts/themineworks~yell-business-email-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations
Key features
- Up to 250 businesses per search, up to 300 searches per run. Yell serves 10 pages of 25 businesses for one search, and the actor turns them for you. Each run takes up to 50 queries times 50 locations, capped at 300 searches, and the run summary repeats the total Yell reports for each search (7,032 restaurants in London on 28 Sep 2026).
- 26 fields per business: listing id and Yell link, name, categories, every phone, the address split into street, postcode and town, website, rating and review count, description, the services on the card, the area served, whether it is a paid advert, the email and where it was found, and the search that found the row.
- Service-area trades handled. Many plumbers, electricians and cleaners have no premises, and Yell shows "We serve London" instead of an address. Those rows carry
service_arearather than a street. All 13 London plumber cards in the test pages we saved on 28 Sep 2026 were of this kind. - Emails read the way a person would look for them. The homepage first, then the contact and legal pages it links to, then common paths such as
/contact-usand/about-us: at most 5 pages and 20 seconds per website, 6 websites at a time. Pages a website's own robots.txt disallows are skipped. Addresses are kept only on the business's own domain or on an ordinary provider such as gmail.com, btinternet.com or sky.com; the web agency's address, placeholders and no-reply addresses are dropped. Up to 5 addresses per row, best first. - A mail server check on every email. With
verifyEmailDomainon (the default), an address is kept only when its domain has mail (MX) records, or at least an address record that mail can fall back to, so dead and misspelt domains are neither delivered nor charged. - Plain HTTP at 512 MB, no browser. Every run writes a summary to the
OUTPUTrecord in its key-value store: for each search the status (ok,no_resultsorblocked), the total Yell reports, pages read and refused, connection attempts, and how many emails were found.
How to use it
Basic: one trade in one town
{"queries": ["plumbers"],"locations": ["Manchester"],"maxResultsPerSearch": 100}
100 businesses take 4 Yell pages, about 11 seconds each. Without emails, that is the whole run.
Several trades in several towns
Every query runs in every location, so this is nine searches:
{"queries": ["electricians", "plumbers", "roofers"],"locations": ["Leeds", "Bradford", "Wakefield"],"maxResultsPerSearch": 250}
A business found by two of the searches, for example a roofer who also lists under plumbers, is delivered once and charged once. Two searches run at a time.
Cold email list of independent restaurants
{"queries": ["restaurants", "cafes"],"locations": ["Brighton", "Hove"],"maxResultsPerSearch": 250,"includeEmails": true}
Keep the rows that have email; email_source_url shows the page the address was read from, so you can check it before you write. Independent businesses publish an address far more often than chains: most of the rows without an email in our London proof run were chain restaurants (Subway twice, McDonald's, Five Guys, Tortilla).
Count businesses town by town, for pennies
The run summary records the total Yell reports for every search in site_total_results. Ask for one business per search and read the totals from the OUTPUT record:
{"queries": ["dentists"],"locations": ["Leeds", "Sheffield", "Bristol", "Nottingham", "Leicester", "Cardiff"],"maxResultsPerSearch": 1}
Six searches, six businesses delivered, so about $0.017 on the Free plan including the run fee, and you have a market count for each town.
Monthly refresh on a schedule
Save any of the inputs above as a task, then in Apify Console open Schedules, add a schedule (for example the first of every month) and pick the task. Each scheduled run is billed like a manual one, and the schedule itself is free. The actor has no "only new businesses" mode, so compare listing_id with your last export to find the newcomers.
Read a search you already set up on Yell
Paste the results page from your browser:
{"startUrls": [{ "url": "https://www.yell.com/s/plumbers-london.html" }],"maxResultsPerSearch": 50}
Each pasted page is read from its first page on, with the same limits and charges as a typed search. For the short /s/ form, search_query holds the words from the address (plumbers london) and search_location is left out. A pasted UcsSearchAction.do link is read as its /s/ page, with search_query and search_location taken from the link.
Input parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
queries | array of strings | none (prefilled with plumbers) | Trades or business types to search, one per line, as you would type them on Yell. Up to 50. Needed unless you give startUrls. |
locations | array of strings | empty (prefilled with London) | Towns, cities, regions or postcode districts, one per line. A full postcode is searched as its district. Every query is searched in every location. Empty searches the whole UK. Up to 50. |
startUrls | array | empty | Yell search result pages (/s/...html, or a UcsSearchAction.do link, which is read as its /s/ page), read instead of or as well as the queries. |
maxResultsPerSearch | integer | 30 | Most businesses per query and location, 1 to 1,000. Yell shows 25 per page and serves at most 10 pages (250 businesses) for one search. |
includeEmails | boolean | false | Look for each business's email on its own website. Charged only for rows that come back with one. |
verifyEmailDomain | boolean | true | Keep an email only when its domain can receive mail. Only used with includeEmails on. |
There is no proxy setting: Yell needs Apify's unblocking proxy for every search page, so the actor always uses it, at no extra cost. Give at least one query or one search page. A run with neither writes a note row and stops; the $0.005 start fee still applies.
What data do you get?
One row per business. Fields with no value are left out of the row rather than sent as empty.
The business
listing_id(Yell's id, such as7214947),listing_url(the business's Yell page),name,categories(Yell's own headings, such asThai Restaurants),description(the one line strapline on the card),services(the short list on the card),ratingandreview_count(Yell's own stars and the number of ratings, when there are any),sponsored(trueonly when the business appears in these results as a paid advert alone)
Contact
phone(the first number) andphones(all of them), in international format when the number is valid for the UK, otherwise as Yell shows it;website, withutm_,fbclid,gclidandmc_tracking parameters removed (other parameters, such as a chain's own store locator code, stay)
Address
address(one line),street,postal_code,city(as Yell writes it, sometimes in capitals such asLONDON),country(alwaysGB), andservice_areafor a business that serves an area instead of having an address
Email (with includeEmails on)
email(the best address),emails(up to 5, best first),email_source(alwayswebsiteon Yell, which publishes no emails of its own) andemail_source_url(the page it was read from)
Search context
source_site(yell.com),search_query,search_location,scraped_at
Not returned: coordinates, opening hours and region. They sit on each business's own Yell page, which Yell serves only behind its challenge, so reading it would cost one more unblocking request per business, about $0.002, more than a listing pays on the cheapest plan. The actor does not open those pages.
Fill rates in the proof run (20 London restaurants, emails on): website 19, rating 11, description 10, email 9, services 8, sponsored 4.
Stable fields for automations
These fields were present in every one of the 20 rows of the proof run and in all 30 cards of the plumber, dentist and restaurant pages we saved for our tests, and their names will not change:
| Field | What it holds |
|---|---|
listing_id | Yell's id for the business, the same in every run |
listing_url | Link to the business's page on yell.com |
name | Business name as listed |
categories | Yell's headings for the business, as a list |
phone | The first phone number |
phones | Every phone number on the card |
country | Always GB |
source_site | Always yell.com |
search_query | The query, or the words of the pasted page, that found the row |
scraped_at | When the row was read (ISO 8601) |
search_location is present whenever the search had a location. address, street, postal_code and city were in all 20 restaurant rows but missing from every service-area plumber, so test for them, or for service_area, before you rely on them.
Output examples
Real rows from the proof run on 28 Sep 2026 (restaurants in London, emails on), trimmed where marked.
A business with an email on its own domain, read from its homepage (complete row):
{"listing_id": "480885","listing_url": "https://www.yell.com/biz/da-franco-ristorante-italiano-london-480885/","name": "Da Franco Ristorante Italiano","categories": ["Italian Restaurants"],"phone": "+44 20 8368 6224","phones": ["+44 20 8368 6224"],"address": "30 Queens Parade, Friern Barnet Rd, London, N11 3DA","street": "30 Queens Parade, Friern Barnet Rd","postal_code": "N11 3DA","city": "London","country": "GB","website": "https://www.dafrancorestaurant.co.uk","email": "enquiries@dafrancorestaurant.co.uk","emails": ["enquiries@dafrancorestaurant.co.uk"],"email_source": "website","email_source_url": "https://www.dafrancorestaurant.co.uk/","rating": 4.8,"review_count": 11,"description": "Quality Authentic Italian Cuisine","services": ["Family Run", "Established 38 Years", "Special Occasions", "A La Carte Menu", "Wholesome Italian Food", "Set Menus"],"sponsored": true,"source_site": "yell.com","search_query": "restaurants","search_location": "London","scraped_at": "2026-09-28T12:47:20.002Z"}
A small business whose real inbox is a Gmail address published on its website (trimmed):
{"listing_id": "6829371","name": "Maureen's Pie & Mash Shop","categories": ["English Restaurants"],"phone": "+44 7956 381216","address": "6 Market Way, London, E14 6AH","website": "https://maureenspieandmash.co.uk","email": "maureenspienmash@gmail.com","email_source": "website","email_source_url": "https://maureenspieandmash.co.uk/","rating": 5,"review_count": 3}
A chain branch with no email on the pages read, charged as a business only. The chain's own code stays in the website address (trimmed):
{"listing_id": "11046894","name": "Subway","categories": ["Fast Food Restaurants"],"phone": "+44 20 7240 0474","address": "3 Adelaide Street, LONDON, WC2N 4HZ","city": "LONDON","website": "https://restaurants.subway.com/united-kingdom/en/london/3-adelaide-street?y_source=1_MTQ5MjU1NzYtNzAyLWxvY2F0aW9uLndlYnNpdGU%3D","description": "See our Menu!","source_site": "yell.com"}
A business with no website on Yell, so no email lookup was possible (trimmed):
{"listing_id": "8139843","listing_url": "https://www.yell.com/biz/chicken-village-london-8139843/","name": "Chicken Village","categories": ["Fast Food Restaurants"],"phone": "+44 20 8529 9966","address": "289 Manchester Rd Chorlton, London, E4 8NU","rating": 5,"review_count": 1}
The note row at the end of the run (never charged; filter on _type to drop it), trimmed:
{"_type": "info","delivered": 20,"message": "20 businesses delivered. This row is informational: it is never billed.","scraped_at": "2026-09-28T12:47:23.525Z"}
Pricing
You pay per business delivered to your dataset, plus a flat start fee per run. An email is a second, separate charge, made only for rows that come back with one. The unblocking proxy Yell needs is included.
| Event | Free plan | Starter (Bronze) | Scale (Silver) | Business (Gold) and above |
|---|---|---|---|---|
Business delivered (listing-scraped), per business | $0.002 | $0.0017 | $0.0014 | $0.001 |
| Business delivered, per 1,000 | $2.00 | $1.70 | $1.40 | $1.00 |
Email found (email-found), per email | $0.03 | $0.025 | $0.02 | $0.015 |
| Email found, per 1,000 | $30 | $25 | $20 | $15 |
Run start (run-start), once per run | $0.005 | $0.005 | $0.005 | $0.005 |
The start fee is our own run-start event: a flat $0.005 once per run, whatever memory you choose. It is not Apify's per GB start fee, and it is charged on every run, including a run that finds nothing. These prices took effect on 28 Sep 2026, and no change is scheduled as of 1 Oct 2026. The Pricing tab always shows the rate for your own plan; if this table and the Pricing tab ever disagree, the Pricing tab is right.
What a real job costs. 1,000 businesses with emails off cost $2.00 plus $0.005 on the Free plan, and $1.00 plus $0.005 on Business. With emails on, at the rate of our proof run (9 emails in 20 rows), 1,000 businesses bring about 450 emails: about $15.51 in all on Free and $7.76 on Business. Turn emails on only for the searches where you need them.
Never charged:
- search pages Yell refused, and the retries through the unblocking proxy;
- a business already delivered by another search in the same run;
- websites that were opened but gave no email (the row is charged as a business only);
- an email address already charged earlier in the same run, such as the shared inbox of a chain's branches (it is still delivered on every row);
- the note row and the
OUTPUTrun summary.
To cap what a run can cost, set a maximum total charge in the run options. The actor stops before a business the budget cannot pay for, and when the budget covers a business but not its email, the row is delivered without the email and the email is not charged.
FAQ
What is Yell.com?
The UK's best known business directory, formerly the Yellow Pages. It lists tradespeople, shops, restaurants, clinics, solicitors and other businesses across the United Kingdom, with phone, address, website, Yell ratings and the services each business advertises.
How many businesses can I get?
Up to 250 per search, because Yell serves at most 10 pages of 25 for one search (page 11 and beyond answer "not found"), and up to 300 searches per run. The run summary shows how many businesses Yell reports for each search (5,198 plumbers in London on 28 Sep 2026), so you can see what a search leaves out. To go deeper, search town by town or with narrower trades. A run stops cleanly before its timeout (one hour by default) and keeps everything delivered so far, so raise the timeout in the run options for very large runs.
How fresh is the data?
Every run reads Yell live; nothing comes from a cache. scraped_at on each row says when it was read.
Do I need a Yell account, cookies or an API key?
No. The actor reads the public search pages any visitor sees, without signing in. There is nothing of yours to connect.
Does it respect Yell's robots.txt?
Yes. The actor reads Yell's robots.txt fresh at the start of every run and checks every page against it before asking for it, and again if Yell redirects it. It reads Yell's own listing pages (/s/plumbers-london.html, page 2 as ?pageNum=2); Yell's typed search address, /ucs/UcsSearchAction.do, which robots.txt disallows, is never requested. Business websites are checked against their own robots.txt the same way.
Do I need to set up a proxy?
No. Yell puts a Cloudflare challenge in front of its pages, so the actor reads every search page through Apify's unblocking proxy, which passes it, at about 11 seconds a page. That cost is included. Business websites are fetched directly for emails, never through the unblocking proxy.
Will every business have an email?
No. Yell publishes no emails, so an email can only come from the business's own website, and many sites show only a contact form. In our proof run 9 of 20 London restaurants had one; of the other 11, 1 had no website, 2 websites did not load, 2 refused the request and 6 showed no usable address. Trades listed mostly by chains or lead generation adverts, such as many London plumbers, give fewer. The actor never guesses an address from a name, and you pay nothing extra for a row without an email.
Why do some rows have no street address?
Businesses without premises, common among plumbers, electricians and cleaners, show "We serve London" on Yell instead of an address. Those rows carry service_area with the area as Yell gives it, and no address, street, postal_code or city.
Can I search the whole UK at once?
Yes: leave locations empty. Yell then searches the whole country (9,636 dentists in our 28 Sep 2026 test), but a search still stops at 250 businesses, so town by town searches give far better coverage.
Why are there no coordinates or opening hours?
They are only on each business's own Yell page, which sits behind the same challenge and would cost one more unblocking request per business. The actor reads the search pages only, which carry everything listed under "What data do you get?".
Can I get only the new businesses each month?
There is no "only new" mode in this actor. Schedule the same input and compare listing_id with your last export.
Which formats can I export?
JSON, CSV, Excel, XML, HTML table and RSS from the dataset page in Apify Console, or through the Apify API.
Can I use it from Claude, ChatGPT or another AI agent?
- Connector URL:
https://mcp.apify.com/?tools=themineworks/yell-business-email-scraper. - Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code:
claude mcp add -t http yell-business-email-scraper "https://mcp.apify.com/?tools=themineworks/yell-business-email-scraper".
Is it legal to scrape Yell.com?
The actor collects only publicly visible business listings and never signs in. Business contact details are still personal data when they identify a person, for example a sole trader's name and mobile number, so how you store and use them is your responsibility: follow Yell's terms and the UK GDPR, and where you send marketing messages also PECR (and CAN-SPAM or the CCPA for contacts in the US). This is general information, not legal advice. The actor is an independent tool, not affiliated with or endorsed by Yell; Yell.com is a trademark of its owner.
Integrations
- Google Sheets: send each run's dataset to a sheet with Apify's Google Sheets integration.
- Make, Zapier and n8n: start runs and receive the businesses in your workflows.
- Webhooks: get a call when a run finishes, for example to load new rows into your CRM.
- API: start runs and read datasets from any language with the Apify API or the Python and JavaScript clients.
- MCP clients: Claude, ChatGPT and other agents through Apify's MCP server.
More from The Mine Works
Leads and business directories
- B2B Leads Finder
- Skip Trace Lookup
- Google Maps Email Scraper
- JustDial Scraper
- 2GIS Places Scraper
- IndiaMART Scraper
- Yandex Maps Scraper
- Contact Details Scraper
- US Business Registry
- Google Maps Scraper
- Yellow Pages Scraper
- Lead Generation MCP
Social media and video
Marketing, SEO and reviews
Real estate
Science, health and government data
Jobs and hiring
E-commerce and marketplaces
Company and business data
Food and local services
Developer and AI tools
More tools
Support
Found a problem or need a field? Open an issue on the actor's Issues tab and we will answer there. For a new source or a custom build, email dmineworks@gmail.com.
Yell.com Scraper turns any Yell search into rows of UK businesses with phone, address, website and rating and, when you want it, an email read from the business's own website and checked for a working mail server.

