PagesJaunes · Email & Website Scraper from URL avatar

PagesJaunes · Email & Website Scraper from URL

Pricing

from $0.56 / 1,000 business with phones

Go to Apify Store
PagesJaunes · Email & Website Scraper from URL

PagesJaunes · Email & Website Scraper from URL

Paste a PagesJaunes search or /pros/ URL. Get emails when published, websites, phones and SIRET — one row per business, ready for CRM. No login.

Pricing

from $0.56 / 1,000 business with phones

Rating

0.0

(0)

Developer

Corentin Robert

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Paste a PagesJaunes directory or search URL (we paginate) or /pros/ listing URLs. One row per business: email when published, website, phones, SIRET, NAF — ready for CRM.

No login. No API key. Public directory only.

Who is this for?

You are…Typical goalSuggested setup
Local outbound / SDRCall lists of kinés, opticians, restaurantsPaste a directory URL, 20–200 rows
Franchise / network scoutMap a vertical in one cityOne trade, raise max items
Agency / CRM opsEnrich a territory file with phones and SIRETOutreach / CRM dataset view
Market researchCount and locate shopsOverview view, skip nothing

What you get by default: name, address, PagesJaunes profile URL, public phones when the fiche publishes them, SIRET / NAF / SIREN when the “Infos financières” block is present. List pages do not include phones — each row opens the public profile.

What we do not invent: emails. PagesJaunes rarely shows a mailbox on the fiche. Turn on Find email on the business website to look for a public address on the company site (same idea as HelloAsso). Empty website means the listing did not publish one.

Quick start

  1. Open the Actor in Apify Console.
  2. On pagesjaunes.fr, search a trade + city (or open a fiche).
  3. Paste the URL:
    • Directory / search URL — we paginate the list and open each fiche.
    • Listing URL (/pros/{id}) — we scrape only those fiches.
  4. Leave Max businesses at 20 for a first run.
  5. Click Start. Open the Dataset while it fills.

Ready-made examples (published tasks)

ExampleBest for
Physiotherapists in LyonHealth outbound, phones + SIRET
Opticians in ParisRetail / optical networks
Restaurants in MarseilleLocal hospitality lists
Sport shops in BordeauxRetail territory mapping

What it extracts

CategoryFields
Identityname, epj, listingUrl, activity
Addressstreet, city, postalCode, department, address
Contactphone, phones[], website, email, emailSource
Companysiret, siren, naf, legalForm
Extradescription, latitude, longitude, openingHours, imageUrl

Fill rates from a Lyon physiotherapist spike (8 profiles): 8/8 phones, 6/8 SIRET + NAF. Coverage varies by vertical — restaurants publish SIRET less often than regulated health listings.

Input

FieldWhat it does
searchUrlsPagesJaunes directory or search URL(s). We paginate.
listingUrlsDirect /pros/{id} fiche URL(s). No directory crawl.
maxItemsRow cap. 0 = no ceiling. Free plan: 20 / run
enrichFromWebsiteHTTP(S) on the business website for a published mailbox. Off by default.

API-only: proxyConfiguration, maxConcurrency (1–12, default 8). Cloud runs use Apify Proxy by default.

Example — paginate a directory

{
"searchUrls": ["https://www.pagesjaunes.fr/annuaire/lyon-69/masseurs-kinesitherapeutes"],
"maxItems": 20
}

Example — specific fiches

{
"listingUrls": ["https://www.pagesjaunes.fr/pros/53957648"]
}

Output example

{
"name": "Claire Heberling",
"epj": "53957648",
"listingUrl": "https://www.pagesjaunes.fr/pros/53957648",
"activity": "Physiotherapists (kinés)",
"street": "11 Antoine Lumière",
"city": "Lyon",
"postalCode": "69008",
"phone": "06 86 79 56 68",
"phones": ["06 86 79 56 68"],
"email": "contact@cabinet-exemple.fr",
"emailSource": "business-website",
"siret": "49247814400040",
"siren": "492478144",
"naf": "8690E",
"country": "FR"
}

How to use

  1. Paste a PagesJaunes directory or listing URL.
  2. Set maxItems (20 for a trial).
  3. Run. Rows appear as each public profile is parsed.
  4. Export Dataset as JSON / CSV / Excel.

How it works

  1. Open the public SEO directory (browser — Cloudflare blocks plain HTTP).
  2. Read listing JSON-LD (name, address, profile id).
  3. Open each /pros/{id} fiche for phones, SIRET and NAF.
  4. If Find email on the business website is on and the listing has a site, fetch homepage + contact / mentions légales over HTTP(S).
  5. Deduplicate by PagesJaunes id and push immediately.

Typical trial (20 rows): about 1–2 minutes after Chrome starts, not 10. Large paid runs take several minutes because each lead needs a profile page.

How much does it cost to scrape PagesJaunes?

Pay per saved business (plus a tiny Actor start). Comparable PagesJaunes Actors on the Store typically list $0.80–$1.00 per 1,000 rows. This Actor matches the floor on phone leads and only charges more when a real mailbox is found.

Event (Free)Per rowPer 1,000
Business with phone (default, primary)$0.0008$0.80
Business with email (fiche or website)$0.0015$1.50
Business without phone$0.0004$0.40
Actor start$0.00005 / GB
ScenarioApprox. cost (Free)
20 rows with phone (trial)~$0.016 + start
20 rows with email~$0.03 + start
1,000 rows with phone~$0.80 + start
1,000 rows with email~$1.50 + start

Bronze → Diamond pay less per row. Datacenter Apify Proxy on cloud is enough in our tests (no residential required).

This Actor only reads public PagesJaunes directory pages. Listings can contain personal data (names, phones). You must have a lawful basis (GDPR / ePrivacy) for your use case — typically B2B outreach to professionals. We do not bypass logins or paid walls.

Local development

cd pagesjaunes-local-leads
npm install
npm test
apify run --purge

Default input is in .actor/INPUT.json (Lyon physiotherapists, 8 rows). Local apify run is not capped at 20.

Also available

HelloAsso · French Association Directory — public association names, cities and profile URLs.

Support

Contact corentin@outreacher.fr if you need a custom scraper or a tailored trade mapping.