PagineGialle Scraper — Italian Business Leads avatar

PagineGialle Scraper — Italian Business Leads

Pricing

from $7.00 / 1,000 business records

Go to Apify Store
PagineGialle Scraper — Italian Business Leads

PagineGialle Scraper — Italian Business Leads

Extract Italian business leads from PagineGialle.it with emails, phone numbers, WhatsApp contacts, websites, locations, ratings, social profiles, flat output, automatic deduplication, and per-query or global result limits.

Pricing

from $7.00 / 1,000 business records

Rating

4.3

(2)

Developer

Emiliano Mastragostino

Emiliano Mastragostino

Maintained by Community

Actor stats

3

Bookmarked

173

Total users

10

Monthly active users

21 hours ago

Last modified

Share

Pagine Gialle Scraper — Italian Business Leads 🇮🇹

🇮🇹 Leggi la versione italiana

Extract structured business leads from PagineGialle.it, Italy's Yellow Pages directory, including business names, emails, phone numbers, WhatsApp contacts, websites, addresses, and social profiles.

Search by business categories and locations, provide specific PagineGialle search URLs, or combine both. Get flat, lead-ready business records with automatic deduplication, contact-quality flags, and flexible result limits.

Built for reliable long runs, the Actor supports large multi-query extractions while keeping your dataset clean. Deduplication is enabled by default, and only unique business records successfully saved to the dataset are billed.

Key features

  • ✅ Flexible search inputs — combine business categories and locations, direct PagineGialle search URLs, or both in a single run.
  • ✅ Built for long runs — process many searches with automatic pagination, global and per-query limits, deduplication, and run summaries.
  • ✅ Automatic deduplication — remove overlapping PagineGialle profiles within each run using reliable profile identifiers.
  • ✅ Pay only for saved results — duplicates skipped during deduplication are not saved or billed as results.
  • ✅ Lead-ready output — flat business records with contact details, location data, social profiles, and contactability flags, ready for CSV, Excel, Google Sheets, and CRM imports.
  • ✅ Reliable extraction — proxy rotation and blocking mitigation for consistent data collection.

What can you use this scraper for?

  • 🎯 B2B lead generation — build targeted lists of Italian businesses and professionals with available contact information.
  • 📍 Local market research — discover businesses by category and geographic area to analyze local markets.
  • 🔎 Competitor research — collect business details, websites, locations, and ratings across selected industries.
  • 📞 Sales prospecting — identify potential customers and filter leads by available contact channels.
  • 🔄 Data collection and automation — export structured business data to spreadsheets, CRMs, and automated workflows through Apify.

How to scrape PagineGialle

  1. Choose your searches — enter business categories and locations, paste PagineGialle search-result URLs, or combine both.
  2. Configure result limits — optionally set maxItems and maxItemsPerQuery. Deduplication is enabled by default.
  3. Run the Actor — start it from Apify Console or through the API.
  4. Export your leads — download the resulting dataset in JSON, CSV, Excel, XML, or another supported format.

You can start with a single search or configure many categories, locations, and URLs for a larger extraction.

Input configuration

FieldTypeDescription
categoriesarrayBusiness categories in Italian, such as "dentisti", "avvocati", or "ristoranti". Use together with locations.
locationsarrayCity names, province codes, or Italian postcodes (CAPs), such as "Roma", "MI", or "00121". Use together with categories.
searchUrlsarrayDirect PagineGialle search-result URLs. Can be used alone or combined with category/location searches.
maxItemsintegerMaximum number of businesses saved across the entire run. 0 means unlimited. Default: 0.
maxItemsPerQueryintegerMaximum number of businesses saved per category/location pair or direct search URL. 0 means unlimited. Default: 0.
deduplicateResultsbooleanRemove duplicate PagineGialle profiles within the current run. Default: true.

Input examples

The Actor supports three input patterns.

Example 1 — Scrape a PagineGialle search URL

Paste a search-result URL copied from your browser:

{
"searchUrls": ["https://www.paginegialle.it/ricerca/avvocati/milano"]
}

Example 2 — Search by categories and locations

The Actor generates one search for every category/location combination:

{
"categories": ["dentisti"],
"locations": ["Roma", "00121"]
}

Example 3 — Combine searches and configure limits

Use multiple categories, locations, and direct search URLs in the same run:

{
"categories": ["dentisti", "commercialisti"],
"locations": ["Roma", "FI", "00121"],
"searchUrls": ["https://www.paginegialle.it/ricerca/avvocati/milano"],
"maxItems": 700,
"maxItemsPerQuery": 100,
"deduplicateResults": true
}

Each category is combined with each location. For example, two categories and three locations generate six searches. Direct search URLs are added to these searches, and overlapping results are deduplicated by default.

At least one complete category/location combination or one valid searchUrls entry is required. Only PagineGialle search-result URLs are accepted, not individual business profile URLs.

What data can you extract?

The Actor returns one flat record per saved business listing, making the dataset easy to filter, export, and import into other tools.

Data groupAvailable fields
Business detailscompany_name, business_category, description, vat_number
Contact dataemail, emails, phone, phones, secondary_phone, whatsapp, whatsapps
Online presencewebsite, website_domain, facebook_url, instagram_url, tiktok_url, logo_url
Locationaddress, postcode, city, province, region, country, latitude, longitude
Ratingsrating_average, rating_count
Lead-quality flagshas_email, has_phone, has_mobile_phone, has_whatsapp, has_website, has_social, has_vat_number, is_contactable, contact_channels
Query attributionquery_category, query_location, query_input_type, query_strategy, query_id, query_search_url
Source metadataprofile_url, profile_id, source, search_url, source_page_number, scraped_at

Fields may be null when PagineGialle does not provide the corresponding information. Collection fields such as emails, phones, and whatsapps are returned as arrays and may be empty.

Contact-quality flags

The Actor includes derived fields to help you filter and qualify business records:

  • has_email, has_phone, has_whatsapp, has_website, and has_social indicate which contact channels are available.
  • has_mobile_phone uses a conservative heuristic to identify Italian mobile numbers.
  • vat_number is the Italian VAT number (partita IVA): 11 digits without the IT prefix, or null when missing or invalid. has_vat_number flags its presence; it is not a contact channel.
  • is_contactable is true when at least one email, phone number, WhatsApp contact, or website is available. Social profiles alone do not set this flag.
  • contact_channels lists the available contact channels.

These fields make it easier to identify businesses with usable contact information without additional data processing.

Output example

The following example shows a business record extracted from PagineGialle:

{
"company_name": "Monti Studio",
"business_category": "Studi commercialisti",
"description": "Lo STUDIO MONTI fornisce ai propri clienti servizi professionali in materia fiscale e del lavoro.",
"vat_number": null,
"website": "https://www.montistudio.eu",
"website_domain": "montistudio.eu",
"email": "info@montistudio.it",
"emails": ["info@montistudio.it"],
"phone": "06 5812270",
"phones": ["06 5812270", "333 7430257"],
"secondary_phone": "333 7430257",
"whatsapp": "333 7430257",
"whatsapps": ["333 7430257"],
"address": "Via Costanza Baudana Vaccolini, 5",
"postcode": "00153",
"city": "Roma",
"province": "RM",
"region": "Lazio",
"country": "Italy",
"latitude": 41.87813,
"longitude": 12.46669,
"rating_average": 5,
"rating_count": 3,
"profile_url": "https://www.paginegialle.it/montistudioroma",
"profile_id": "0ec6b49e-c36e-41f4-9221-79797f606906",
"logo_url": "https://img.italiaonline.it/0WO5p000003g9yRGAQ/IOL4YOU_LOGO_1647186095662.gif",
"facebook_url": "https://www.facebook.com/montistudio.roma/",
"instagram_url": null,
"tiktok_url": null,
"has_email": true,
"has_phone": true,
"has_mobile_phone": true,
"has_whatsapp": true,
"has_website": true,
"has_social": true,
"has_vat_number": false,
"is_contactable": true,
"contact_channels": ["email", "phone", "whatsapp", "website"],
"query_category": "commercialisti",
"query_location": "Roma",
"query_input_type": "category_location",
"query_strategy": "category_location",
"query_id": "category_location:commercialisti:roma",
"query_search_url": "https://www.paginegialle.it/ricerca/commercialisti/Roma",
"source": "paginegialle.it",
"search_url": "https://www.paginegialle.it/ricerca/commercialisti/Roma",
"source_page_number": 1,
"scraped_at": "2026-07-02T10:00:00.000Z"
}

Deduplication, limits, and billing

How deduplication works

Deduplication is enabled by default and applies within a single Actor run.

The Actor identifies duplicate listings using two reliable PagineGialle identifiers:

  • profile_id
  • Normalized profile_url

The first matching record is saved. Subsequent matches are skipped rather than merged.

The Actor does not deduplicate by company name, email, phone number, address, or website domain. Records without a reliable profile identifier are treated as unique because they cannot be safely matched.

When deduplication is enabled, skipped duplicates:

  • Are not saved to the dataset.
  • Are not billed as results.
  • Do not count toward maxItems or maxItemsPerQuery.

Billing applies only to final business records successfully saved after deduplication and limit checks.

Deduplication is limited to the current run. If deduplicateResults is disabled, duplicate records may be saved, counted toward limits, and billed normally.

Global and per-query limits

Two settings control how many results the Actor saves:

  • maxItems — limits the total number of saved businesses across the entire run.
  • maxItemsPerQuery — limits the number of saved businesses for each category/location combination or direct search URL.

Both limits count saved records after deduplication.

For example, if you search three locations with maxItemsPerQuery: 100, each query can contribute up to 100 unique saved records. This helps distribute coverage across locations instead of allowing one large query to consume the entire result budget.

Run summary and deduplication state

The default dataset contains business records only. It does not include run summaries, debug entries, or failed-request records.

Additional run information is stored in the default key-value store:

KeyDescription
RUN_SUMMARYQuery counts, saved records, duplicates removed, contact coverage, result limits, and failure statistics.
DEDUPE_STATESnapshot of deduplication state for the current run.

These records are not added to the dataset and are not billed as business results.

The run summary helps you monitor extraction progress and evaluate results, particularly during long-running jobs.

DEDUPE_STATE provides visibility into deduplication state but does not enable automatic resuming or deduplication across separate runs.

Tips for better coverage

  • Use multiple postcodes (CAPs) for big cities. PagineGialle itself returns at most 200 results per search. If a big-city search hits that cap, search several CAPs instead.
  • Use filtered search URLs. Perform a search directly on PagineGialle, apply the filters you need, and paste the resulting URL into searchUrls.
  • Combine search methods. Use category/location combinations alongside specific search URLs to collect results from different searches in one run.
  • Balance your queries. Set maxItemsPerQuery to prevent large searches from consuming too much of your result budget.
  • Control your total results. Use maxItems to set an overall limit on saved records.
  • Keep deduplication enabled. This is particularly useful when searching overlapping geographic areas or running many queries together.

The 200-result cap applies to every search, including direct searchUrls, and a search that returns exactly 200 results was probably cut off. See Can I scrape more than 200 PagineGialle results? for details and how to split such searches.

The Actor searches only the locations and URLs you provide; it does not automatically expand cities into CAPs or districts.

Frequently asked questions

Can I scrape more than 200 PagineGialle results?

Not from a single search. PagineGialle returns at most 200 results per search, even when the results page says "more than 200 results" ("più di 200 risultati"). This is a limit of the website, not of the Actor, and it applies to category/location searches and direct searchUrls alike.

Most searches stay well below 200 and need nothing special. Only broad searches, usually in big cities such as Roma or Milano, can go above it. If a search returns exactly 200 results, it was probably cut off. You can then split it into smaller searches, each of which can return up to 200 results:

  • Search by CAP instead of the whole city, for example 00184, 00185, 00186 instead of Roma.
  • Use filtered search URLs. Apply filters on PagineGialle and paste the resulting URLs into searchUrls.

All searches run together in the same run. Deduplication makes sure a business found by more than one search is saved and billed only once. The Actor does not split cities into CAPs automatically.

Can I combine categories, locations, and direct search URLs?

Yes. The Actor generates searches for every category/location combination and adds your searchUrls. All searches run together, with deduplication enabled by default.

Are duplicate results billed?

No, when deduplication is enabled (the default). Duplicate profiles are skipped before saving, so only final saved records are billed. If deduplication is disabled, duplicates may be billed.

Does the Actor extract additional contacts from business websites?

No. It extracts information available in PagineGialle listings without visiting external business websites for enrichment. You can use the results in separate enrichment workflows.

Maintenance and support

This Actor is actively maintained.


Versione italiana

Pagine Gialle Scraper è un Actor Apify sviluppato in Italia per estrarre dati e contatti di aziende e professionisti presenti su PagineGialle.it.

Permette di creare liste di lead B2B italiani strutturate e pronte all'uso, con informazioni aziendali, recapiti, indirizzi, siti web, profili social e indicatori sulla disponibilità dei contatti.

È progettato anche per estrazioni di grandi dimensioni: puoi combinare numerose ricerche, eliminare automaticamente i duplicati e controllare il numero di risultati salvati.

Con la deduplicazione attiva, paghi soltanto i record unici effettivamente salvati nel dataset.

Cosa puoi fare

  • Lead generation B2B — crea liste di potenziali clienti e aziende italiane, selezionate per categoria e località.
  • Ricerca di mercato — raccogli informazioni su imprese, professionisti e concorrenti in specifiche aree geografiche.
  • Raccolta di contatti aziendali — estrai email, telefoni, WhatsApp, siti web e profili social pubblicati su PagineGialle.
  • Esportazione e automazione — utilizza i risultati in CSV, Excel, Google Sheets, CRM o workflow Apify.

Funzionalità principali

  • Ricerche flessibili — combina categorie aziendali, città, province, CAP e URL diretti dei risultati di ricerca.
  • Esecuzioni lunghe e multi-query — elabora numerose ricerche in un'unica esecuzione, con paginazione automatica e monitoraggio dei risultati.
  • Deduplicazione automatica — evita di salvare più volte lo stesso profilo PagineGialle durante una singola esecuzione.
  • Fatturazione sui risultati salvati — i duplicati identificati e ignorati non vengono addebitati.
  • Dataset pronto all'uso — ogni azienda viene restituita come un record piatto, facilmente importabile in fogli di calcolo e CRM.
  • Indicatori di contattabilità — individua rapidamente le aziende con email, telefono, cellulare, WhatsApp, sito web o profili social.
  • Controllo dei risultati — imposta limiti globali o per singola ricerca.

Come iniziare

  1. Inserisci le categorie e le località da cercare, ad esempio dentisti a Roma, oppure fornisci direttamente uno o più URL di ricerca di PagineGialle.
  2. Imposta facoltativamente i limiti usando maxItems e maxItemsPerQuery. La deduplicazione è attiva per impostazione predefinita.
  3. Avvia l'Actor dalla Console Apify o tramite API.
  4. Esporta i risultati nel formato che preferisci.

Puoi combinare categorie e località per generare automaticamente più ricerche. Ad esempio, due categorie e tre località producono sei ricerche distinte.

Per configurazioni complete ed esempi JSON, consulta la sezione Input configuration.

Quali dati vengono estratti?

Ogni record può contenere:

  • Nome, categoria, descrizione e partita IVA dell'azienda.
  • Indirizzi email e numeri di telefono, inclusi eventuali contatti WhatsApp.
  • Sito web, dominio e profili social.
  • Indirizzo, CAP, città, provincia, regione e coordinate geografiche.
  • Valutazione media e numero di recensioni.
  • Indicatori sulla presenza dei diversi canali di contatto.
  • Informazioni sulla ricerca e sulla pagina PagineGialle da cui proviene il risultato.

I dati vengono restituiti in una struttura piatta, senza oggetti annidati, per facilitare filtri, analisi e importazioni.

I campi disponibili dipendono dalle informazioni effettivamente pubblicate su PagineGialle.

Consulta la tabella completa dei campi e l'esempio JSON di output nella documentazione inglese.

Deduplicazione, costi e limiti

La deduplicazione è attiva per impostazione predefinita e funziona all'interno della singola esecuzione.

L'Actor riconosce i duplicati attraverso gli identificatori dei profili PagineGialle. Il primo record viene salvato, mentre gli eventuali duplicati successivi vengono ignorati.

I duplicati eliminati:

  • Non vengono inseriti nel dataset.
  • Non vengono addebitati come risultati.
  • Non vengono conteggiati nei limiti configurati.

Puoi controllare il numero di risultati attraverso:

  • maxItems — limite complessivo dell'esecuzione.
  • maxItemsPerQuery — limite per ogni ricerca.

Come ottenere una maggiore copertura

Ogni ricerca su PagineGialle restituisce al massimo 200 risultati, anche quando la pagina indica «più di 200 risultati». Solo le ricerche più ampie, tipicamente nelle grandi città, superano questo limite: se una ricerca restituisce esattamente 200 risultati, conviene suddividerla per CAP o usare URL di ricerca filtrati.

Per aumentare la copertura puoi:

  • Cercare più CAP della stessa città.
  • Utilizzare URL di ricerca con filtri specifici.
  • Combinare ricerche per categoria/località e URL diretti.
  • Impostare maxItemsPerQuery per distribuire i risultati tra diverse ricerche.

La deduplicazione automatica permette di combinare ricerche sovrapposte evitando, quando i profili sono identificabili, di salvare e pagare più volte la stessa azienda.

L'Actor non suddivide automaticamente le città in CAP o quartieri: esegue le ricerche specificate nell'input.

Per maggiori dettagli, consulta la documentazione completa in inglese.

Manutenzione e supporto

Per assistenza, segnalazioni o richieste di nuove funzionalità, consulta la sezione Maintenance and support.