
Congress Stock Trades Scraper
scrape.ly/store/querystone/congress-trades-scraperNewsBusiness
3 monthly users

Scrape pagesjaunes.fr business listings by keyword and city or URL. Get name, phone, website, address, coordinates, rating, opening hours, SIRET, SIREN, NAF code and legal form. Built for French B2B lead generation.
Turn any PagesJaunes search into a clean list of French business leads: name, phone, website, address, GPS coordinates, rating, opening hours and official company data (SIRET, SIREN, NAF code, legal form, headcount). Search by keyword and city, or paste PagesJaunes URLs. No login, no browser, and a 20-business search finishes in seconds.
plombier, avocat) and one or more locations (e.g. Lyon, Gironde, 75011). Or paste PagesJaunes URLs: search pages, directory pages like pagesjaunes.fr/annuaire/paris-75/plombiers, or business pages like pagesjaunes.fr/pros/12345678.| Field | What it does |
|---|---|
searchTerms | What to look for ("quoi, qui"): a trade, an activity or a business name. |
locations | Where ("où"): city, department, region or postcode. Every term is searched in every location. |
startUrls | PagesJaunes search URLs, directory URLs or business pages (/pros/<id>). |
maxItems | Max businesses per search (default 20, 0 = all, PagesJaunes caps a search at 10,000). |
sort | relevance, distance, rating or reviews. |
minRating, onlyWithWebsite, onlyWithSiret | Filters, applied before saving (skipped businesses are free). |
includeDetails | Open each business page for SIRET, hours, coordinates and more (default on). Off = list-only results with name, phone, address, website and rating. |
includeReviews | Add the latest reviews from each business page. |
{
"searchTerms": ["plombier", "électricien"],
"locations": ["Lyon", "Villeurbanne"],
"maxItems": 50,
"sort": "rating",
"includeDetails": true
}
One row per business. The Output tab has three views: Businesses, Contacts (leads) and Company data (SIRET).
| Field | Description |
|---|---|
name, url, pagesJaunesId | Business name, PagesJaunes page and ID. |
category, categories | Main activity and every activity listed. |
phone, phones, fax | Main phone number, all phone numbers, fax. |
website, websites, socialLinks | Website(s) and social pages (Facebook, Instagram, LinkedIn...). |
address, street, postalCode, city, country, latitude, longitude | Address split into parts, plus GPS coordinates. |
rating, reviewCount, googleRating, googleReviewCount | PagesJaunes rating and review count, plus the Google rating shown on PagesJaunes. |
openingHours, openingHoursText, openingHoursSpecification | Hours per day (French day names), free-text hours ("24h/24") and machine-readable schema.org hours. |
siret, siren, nafCode, legalForm, establishmentType, creationDate, employees, companyEmployees, otherNames | Company data shown on the business page (INSEE Sirene based). |
description, services, brands, tags, paymentMethods, priceRange | What the business offers. |
logo, images, claimed, isPaidListing | Media and listing flags. |
reviews | Latest reviews (author, rating, date, text) when includeReviews is on. |
searchTerm, searchLocation, searchUrl, position, detailsLoaded, scrapedAt | Where the row came from. |
Example (fictional business, real shape):
{
"name": "Plomberie Martin & Fils",
"url": "https://www.pagesjaunes.fr/pros/00000001",
"pagesJaunesId": "00000001",
"category": "Plombiers",
"categories": ["Plombiers", "Dépannage plomberie", "Vente, installation de chauffe-eau"],
"phone": "04 00 00 00 01",
"phones": ["04 00 00 00 01", "06 00 00 00 02"],
"fax": null,
"website": "https://www.plomberie-martin.example",
"websites": ["https://www.plomberie-martin.example"],
"socialLinks": {"facebook": "https://www.facebook.com/plomberie.martin.example"},
"address": "12 r de la République 69002 Lyon",
"street": "12 r de la République",
"postalCode": "69002",
"city": "Lyon",
"country": "FR",
"latitude": 45.7601,
"longitude": 4.8357,
"rating": 4.6,
"reviewCount": 23,
"googleRating": 4.8,
"googleReviewCount": 112,
"openingHours": {"Lundi": ["08h00 - 12h00", "14h00 - 18h30"], "Samedi": ["Fermé"]},
"openingHoursText": null,
"siret": "00000000100011",
"siren": "000000001",
"nafCode": "4322A",
"legalForm": "SARL, société à responsabilité limitée",
"establishmentType": "Siège",
"creationDate": "3 mars 2012",
"employees": "3 à 5 salariés",
"companyEmployees": "3 à 5 salariés",
"otherNames": [],
"description": "Plombier chauffagiste à Lyon depuis 2012, dépannage rapide et devis gratuit.",
"services": ["dépannage plomberie", "remplacement de chauffe-eau"],
"brands": ["Grohe", "Atlantic"],
"paymentMethods": ["CB", "Chèque", "Espèces"],
"images": ["https://www.pagesjaunes.fr/media/newdam/.../photo.jpg"],
"claimed": true,
"isPaidListing": false,
"searchTerm": "plombier",
"searchLocation": "Lyon",
"searchUrl": "https://www.pagesjaunes.fr/annuaire/chercherlespros?quoiqui=plombier&ou=Lyon",
"position": 1,
"detailsLoaded": true,
"scrapedAt": "2026-10-15T09:00:00+00:00"
}
You pay $0.80 per 1,000 businesses saved ($0.0008 each), plus a small platform usage fee for compute and French residential proxy traffic. In our test, 1,000 fully detailed businesses used about 35 MB of proxy traffic ($0.07) and under a cent of compute, so 1,000 detailed businesses cost about $0.88 in total. List-only runs use less traffic. Businesses removed by your filters are never charged, and you can cap the spend with the run's maximum total charge.
Is it legal to scrape PagesJaunes? The scraper only collects information that PagesJaunes shows publicly to every visitor, without logging in. You are responsible for how you use the data, including GDPR rules on contacting businesses and sole traders in France and the EU.
Do I need a PagesJaunes account or my own proxy? No. No login is needed and the French residential proxy is included and preselected. PagesJaunes blocks datacenter IPs, so keep the default proxy.
How many results can I get? PagesJaunes shows at most 10,000 businesses per search (500 pages of 20). To go further, split a large search by city, department or postcode. The run log tells you how many businesses a search lists.
Why is a field empty? The business did not publish it. Company data (SIRET, NAF, legal form) comes from the business page, so it is only filled when "Open business pages" is on, and a few listings (for example some franchises or very new businesses) show no SIRET. Emails are not shown on PagesJaunes (contact goes through a form), so there is no email field.
Can I schedule it or use the API? Yes. Save your input as a task, schedule it daily or weekly, and fetch the dataset through the API or an integration.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchTermsarrayOptionalSearch terms (quoi, qui)
What to search for on PagesJaunes, e.g. 'plombier', 'restaurant', 'avocat', 'coiffeur', or a business name. Each term is searched in every location below.
locationsarrayOptionalLocations (où)
French cities, departments, regions or postcodes, e.g. 'Paris', 'Lyon', 'Gironde', '75011'. Each search term needs at least one location.
startUrlsarrayOptionalPagesJaunes URLs
Optional. Search URLs (https://www.pagesjaunes.fr/annuaire/chercherlespros?quoiqui=plombier&ou=paris), directory URLs (https://www.pagesjaunes.fr/annuaire/paris-75/plombiers) or business pages (https://www.pagesjaunes.fr/pros/12345678).
maxItemsintegerOptionaldefault 20Max results per search
Stop each search term + location (or search URL) after this many businesses. 0 means all listings (PagesJaunes shows up to 10,000 per search).
sortenumOptionaldefault "relevance"Sort by
Order of the search results.
minRatingintegerOptionalMinimum rating
Only keep businesses with at least this PagesJaunes star rating (1-5). Businesses without a rating are skipped when set.
onlyWithWebsitebooleanOptionaldefault falseOnly businesses with a website
Skip businesses without a website. Skipped businesses are not charged.
onlyWithSiretbooleanOptionaldefault falseOnly businesses with a SIRET
Skip businesses whose page shows no SIRET number. Needs 'Open business pages'.
includeDetailsbooleanOptionaldefault trueOpen business pages
Open each business page for SIRET, SIREN, NAF code, legal form, headcount, all phone numbers, coordinates, opening hours, social links, services, brands and payment methods. Turn off for faster list-only results (name, phone, address, website, rating).
includeReviewsbooleanOptionaldefault falseInclude reviews
Add the latest reviews shown on each business page (author, rating, date, text). Needs 'Open business pages'.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
PagesJaunes blocks datacenter IPs, so French residential proxy is the default. It is cheap here: about 35 KB per business.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| logo | any | Logo |
| name | any | Name |
| phone | any | Phone |
| website | any | Website |
| address | any | Address |
| category | any | Category |
| rating | any | Rating |
| reviewCount | any | Reviews |
| siret | any | SIRET |
| url | any | PagesJaunes URL |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Business | Charged once for each business saved to the dataset. | $0.0008 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('cornerledger/pagesjaunes-scraper').call({
"searchTerms": [
"plombier"
],
"locations": [
"Lyon"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
],
"scrapelyProxyCountry": "FR"
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run cornerledger/pagesjaunes-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=cornerledger/pagesjaunes-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Business search sorted by rating with full details.
Business details plus customer reviews.
Only businesses with a website and a SIRET number.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.