PagineGialle Scraper — Italian Business Directory
Pricing
from $12.00 / 1,000 result scrapeds
PagineGialle Scraper — Italian Business Directory
Scrape business leads from PagineGialle.it, Italy's Pagine Gialle yellow pages. Search by category and city to extract company name, category, full address, city, province, postal code and phone number. Phone appears on nearly every listing. Website is present only on a small share of paid listings.
Pricing
from $12.00 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Extract business listings from PagineGialle.it, Italy's national yellow pages. Search any keyword and city and get clean, structured JSON: business name, category, full address, and phone numbers. Phone numbers are present on virtually every listing, which makes this a fast way to build Italian local-business and lead lists.
No login, no manual cookie handling, no captcha solving on your side — the actor handles the site's bot protection for you.
What this actor does
You give it a search term (in Italian) and a city. It walks the PagineGialle search results, page by page, and returns one structured record per business. Under the hood it solves the site's AWS WAF bot challenge once with a headless browser, then reuses that session to fetch the remaining result pages over plain HTTP — so it stays fast and cheap while still getting past the protection that blocks naive scrapers.
Why use it
- Lead generation. Build call lists of Italian businesses by trade and city (restaurants, plumbers, lawyers, dentists, hotels, and anything else in the directory).
- Market research. Map how many providers of a given service operate in a city or province, with their addresses.
- Local SEO / data enrichment. Match and enrich your own records with phone numbers and addresses from Italy's most-used business directory.
How to scrape PagineGialle data
- Set Search Query to what you are looking for, in Italian — for example
ristorante,idraulico,avvocato,dentista, or a business name. - Set Location to an Italian city or town, for example
Roma,Milano,Napoli, orTorino. - Set Max Results to how many listings you want (each result page holds about 25).
- Keep the Proxy Configuration on Italian residential proxies (RESIDENTIAL group, country IT). This is required to pass the site's bot protection.
- Run the actor. Results stream into the dataset and can be exported as JSON, CSV, Excel, or fed into another tool via the API.
The actor paginates automatically and stops when it reaches your Max Results or runs out of listings for the search. Duplicate listings across pages are removed automatically.
Input
| Field | Type | Required | Description |
|---|---|---|---|
searchQuery | string | no (default ristorante) | What to search for, in Italian: a category, activity, or business name. |
location | string | no (default Roma) | Italian city or town to search in. |
maxResults | integer | no (default 100) | Maximum number of listings to collect across all pages. |
proxyConfiguration | object | recommended | Apify proxy settings. Use RESIDENTIAL, country IT. |
Example input
{"searchQuery": "avvocato","location": "Milano","maxResults": 100,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "IT"}}
Output
Each item is a flat JSON object with these fields:
| Field | Type | Coverage | Description |
|---|---|---|---|
businessName | string | ~100% | Business name as listed. |
category | string | ~100% | Primary activity/category (Italian). |
address | string | ~100% | Street address line. |
city | string | ~100% | City or town (comune). |
province | string | ~100% | Two-letter Italian province code (e.g. RM, MI). |
postalCode | string | ~100% | Italian postal code (CAP), five digits. |
phone | string | ~100% | Primary phone number as published. |
additionalPhones | array | as available | Any further phone numbers for the business. |
website | string | ~5–15% | External website, when the business publishes one (paid feature). |
url | string | ~100% | PagineGialle profile URL. |
scrapedAt | string | 100% | ISO 8601 timestamp of the scrape. |
A note on website and email
PagineGialle only shows an external website link for a minority of businesses (it is a paid listing feature), so expect website coverage in the single-to-low-double-digit percent range. Email is not published on the directory and this actor does not return it. What the directory does expose on almost every listing — and what this actor is built around — is the phone number and address.
Example output
{"businessName": "Ristorante Tana della Volpe","category": "Ristoranti","address": "Via Adeodato Ressi, 82","city": "Roma","province": "RM","postalCode": "00148","phone": "06 6531862","additionalPhones": ["06 60200039","06 6550256"],"website": "https://www.ristorantetanadellavolpe.com","url": "https://www.paginegialle.it/ristorantetanadellavolpe","scrapedAt": "2026-07-12T21:51:04.005Z"}
Tips for good results
- Search in Italian. The directory is an Italian-language site. Use Italian trade
words (
idrauliconotplumber,avvocatonotlawyer). - One city per run for depth. A single city query returns a bounded number of pages. To cover a whole region, run several city queries (or several trades) and combine the datasets.
- Broad terms return more.
ristorantereturns far more than a niche sub-category. - Phone-first lead lists. Because phone and address are near-complete and website is sparse, this actor is best used to build phone/address lead lists, not email lists.
Limitations and known issues
- Website coverage is low (paid listing feature) and email is not available — see the note above.
- Very large single-city queries are bounded by how many pages the site serves for that search. Segment by city or trade to go wider.
- The site is protected by AWS WAF Bot Control. The actor solves the challenge with a browser and replays the session over HTTP; on the rare occasion the session is re-challenged mid-run it re-solves automatically. Italian residential proxies are required for this to work reliably.
How it works (technical)
- A headless Chromium session loads the first results page through an Italian residential proxy and passes the AWS WAF JavaScript challenge.
- The resulting session cookies and browser-rendered first page are captured.
- Remaining pages are fetched over plain HTTP (
got-scraping) reusing the same session and proxy IP — fast and inexpensive. - Listings are parsed from the server-rendered HTML; phone numbers come straight from the listing markup (no per-listing "reveal" request), so no slow detail-page crawl is needed.
- Results are de-duplicated by profile URL before being written to the dataset.
Related scrapers
Building EU business and lead-generation datasets? Pair this with our other directory and registry scrapers:
- Panoramafirm Scraper — Polish business directory (phone + email).
- Firmy.cz Scraper — Czech business directory (Seznam).
- Allabolag Scraper — Swedish company directory with revenue and CEO data.
- Local.ch Scraper — Swiss business directory.
- Ares Scraper — Czech company register (official registry data).
- Companies House Scraper — UK company register.
Search the Apify Store for directory, business, or lead generation to find the full
set.
Legal
Use this actor responsibly and in line with PagineGialle's terms and applicable law (including GDPR when handling personal data). You are responsible for how you use the data you collect. This actor extracts only publicly displayed business listing information.