PagineGialle Scraper: Italian Business Phones & Emails avatar

PagineGialle Scraper: Italian Business Phones & Emails

Pricing

from $1.00 / 1,000 business listings

Go to Apify Store
PagineGialle Scraper: Italian Business Phones & Emails

PagineGialle Scraper: Italian Business Phones & Emails

Scrape PagineGialle (paginegialle.it) by trade and Italian town, province or region: name, phone, address, coordinates, categories, rating and hours. Turn on emails to find each business's address from the directory or its own website, charged only when found. Pay per business.

Pricing

from $1.00 / 1,000 business listings

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

8 hours ago

Last modified

Share

20 Milan plumbers, 20 emails, 12 seconds

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 an Italian town, province or region, for example idraulico in Milano, and get one row per business that PagineGialle (paginegialle.it) lists: name, every phone in international format, address with postcode and region, coordinates, categories, opening hours and the link to its PagineGialle page. Turn on Find emails and the actor adds the email address the business published on PagineGialle, or else one read from its own website. You pay for an email only when one is found and delivered.

Why choose this actor?

  • Emails straight from the directory, charged only when delivered. In our proof run (idraulico in Milano, 28 Sep 2026) 20 of 20 businesses came back with an email: 19 published on PagineGialle itself and 1 read from the business's own website. On a full search the rate falls on later pages (41 of 210 in our Milano test), so you pay the email price only for the rows that have one.
  • Phones the page hides behind a button. The actor reads the structured listing PagineGialle embeds in every results page, so numbers behind the "Mostra numero" button still come back: all 210 businesses of our 7 page Milano test had a phone, against 189 visible on the cards. Coordinates come from the same data on every row.
  • The right place, or nothing. PagineGialle answers a wrong region with an error and has no nationwide search, so the actor carries the site's own list of 7,900 comuni, 112 province codes and 20 regions and always sends the right path. A place it does not know is reported in the run summary instead of guessed. No account, cookies or API key.

Run it on Apify

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 businesses PagineGialle lists for plumbers in Milan, without emails:

{
"queries": ["idraulico"],
"locations": ["Milano"],
"maxResultsPerSearch": 10
}

You can say what you want in two ways, and mix them in one run:

  • Queries and locations (queries, locations): Italian trade words as you would type them on the site, such as idraulico, elettricista, dentista or ristorante (singular and plural give the same results), and a comune (Milano, Cesenatico), a two letter province code (MI, RM) or a region (Lombardia, Sicilia). Every query is searched in every location. A location is required: PagineGialle has no nationwide search.
  • Search pages (startUrls): a PagineGialle results page copied from your browser, such as https://www.paginegialle.it/lombardia/milano/idraulico.html or one of its /p-2.html pages.

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 210), or about 150 businesses that each come back with an email, as on the first page of our Milano test.

Copy to your AI assistant

themineworks/paginegialle-business-email-scraper on Apify. Searches PagineGialle (paginegialle.it), the Italian yellow pages, by trade and Italian comune, province code or region, and returns one row per business with name, phones, address, postcode, region, coordinates, categories, opening hours and rating, plus an optional email from the directory or the business's own website. Call ApifyClient("TOKEN").actor("themineworks/paginegialle-business-email-scraper").call(run_input={"queries": ["idraulico"], "locations": ["Milano"], "maxResultsPerSearch": 50, "includeEmails": true}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: queries (Italian trade words such as "idraulico") and locations (comune such as "Milano", province code such as "MI", or region such as "Lombardia"), or startUrls (paginegialle.it search pages). Optional: maxResultsPerSearch (integer 1 to 1000, default 30; the site serves at most 210 per search), includeEmails (default false), includeDetails (default false), verifyEmailDomain (default true), allowUnblockerFallback (default true). Rows with _type "info" are run notes, never billed. Full spec: GET https://api.apify.com/v2/acts/themineworks~paginegialle-business-email-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations

Key features

  • Up to 210 businesses per search, up to 300 searches per run. PagineGialle shows 30 businesses a page and stops at page 7, even when its badge says "più di 200". Each run takes up to 50 queries times 50 locations, capped at 300 searches.
  • 27 fields per business: listing id and PagineGialle link, name, categories, every phone, the address split into street, postcode, town and region, coordinates, website, rating and review count, opening hours by day, description, the email and where it was found, and the search that found the row.
  • Every Italian place by its own name. A comune, a two letter province code for the whole province, or a region for the whole region. The built in table comes from the site's own place pages, so the actor always requests the path PagineGialle expects.
  • Emails from two places. First the address the business published on PagineGialle (read from the results page itself, no extra request), then its own website: homepage, then the contact and legal pages it links to, then common paths such as /contatti and /chi-siamo, at most 5 pages and 20 seconds per site. Website addresses are kept only on the business's own domain or on an ordinary provider such as gmail.com, libero.it or virgilio.it. Up to 5 addresses per row, best first.
  • A mail server check on every email, the directory's own addresses included. With verifyEmailDomain on (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.
  • Plain HTTP at 512 MB, no browser. Every run writes a summary to the OUTPUT record in its key-value store: for each search the status (ok, no_results or blocked), the count PagineGialle reports, pages read and refused, connection attempts, and where the emails came from.

How to use it

Basic: one trade in one town

{
"queries": ["idraulico"],
"locations": ["Milano"],
"maxResultsPerSearch": 100
}

100 businesses take 4 pages. The first page of a town's search is mostly paid listings, and some of them are businesses based elsewhere that advertise in that town: our Milano proof run returned 14 businesses in Milan, 3 in nearby Canegrate, Bareggio and Desio, and 3 advertisers based in Torino, Borgo Valsugana and Roma.

Several trades in several towns

Every query runs in every location, so this is six searches:

{
"queries": ["elettricista", "idraulico", "imbianchino"],
"locations": ["Bergamo", "Brescia"],
"maxResultsPerSearch": 210
}

A business found by two of the searches is delivered once and charged once. Two searches run at a time.

A whole province or region

{
"queries": ["dentista"],
"locations": ["TO", "Liguria"],
"maxResultsPerSearch": 210
}

TO searches the province of Turin and Liguria the whole region. Each is still one search, so it stops at 210 businesses. For full coverage of a large area, list its comuni one per line instead.

Email list from the first page of many towns

PagineGialle's published emails sit mostly on the first page of each search, where the paid listings are (28 of 30 on page 1 of our Milano test, none on pages 3 to 7). To collect emails cheaply, take the first page of many towns rather than every page of one:

{
"queries": ["idraulico"],
"locations": ["Bologna", "Modena", "Parma", "Reggio nell'Emilia", "Ferrara", "Rimini"],
"maxResultsPerSearch": 30,
"includeEmails": true
}

Rows with an email carry email_source (directory or website) and email_source_url, the page it was read from.

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 the site

{
"startUrls": [
{ "url": "https://www.paginegialle.it/lombardia/milano/idraulico.html" },
{ "url": "https://www.paginegialle.it/lazio/roma/ristoranti.html" }
],
"maxResultsPerSearch": 60
}

Each pasted page is read from its first page on, with the same limits and charges as a typed search.

Input parameters

ParameterTypeDefaultWhat it does
queriesarray of stringsnone (prefilled with idraulico)Italian trade words to search, one per line. Up to 50. Needed unless you give startUrls.
locationsarray of stringsnone (prefilled with Milano)Comuni, two letter province codes or regions, one per line. Every query is searched in every location. Required with queries: PagineGialle has no nationwide search. Up to 50.
startUrlsarrayemptyPagineGialle search result pages, read instead of or as well as the queries.
maxResultsPerSearchinteger30Most businesses per query and location, 1 to 1,000. The site shows 30 per page and serves at most 7 pages (210 businesses) for one search.
includeEmailsbooleanfalseAdd each business's email: the address published on PagineGialle first, then its website. Charged only for rows that come back with one.
includeDetailsbooleanfalseAlso open each business's own PagineGialle page, for the website of ordinary listings, the category heading the business chose, and a description when the card has none. No extra charge, slower. With includeEmails on, the page is opened anyway for rows whose search result had no email.
verifyEmailDomainbooleantrueKeep an email only when its domain can receive mail. Applies to directory and website emails alike.
allowUnblockerFallbackbooleantrueWhen a search page is refused several times over the fast connection, retry it through Apify's unblocking proxy. Included in the price. Turn off to report such pages as refused instead.

Give at least one query with a location, 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 (PagineGialle's page name for the business, such as h2aa-milano), listing_url, name, categories (the category on the card, such as Idraulici e lattonieri; sponsor listings without one show the schema.org type LocalBusiness), description (the short text on the card), rating and review_count (when the business has reviews), opening_hours (one entry per day and time range, such as Mo 08:30-12:30)

Contact

  • phone (the first number) and phones (all of them), in international format such as +39 02 308 3681; website, with utm_, fbclid, gclid and mc_ tracking parameters removed

Address and map

  • address (one line), street, postal_code, city, region (such as Lombardia), country (always IT), latitude, longitude

Email (with includeEmails on)

  • email (the best address), emails (up to 5, best first), email_source (directory or website) and email_source_url (the PagineGialle page, or the website page it was read from)

Search context

  • source_site (paginegialle.it), search_query, search_location, scraped_at

A few things to know about the fields:

  • The website is on the results page only for PagineGialle's paid sponsor listings (4 of 20 rows in the proof run). For an ordinary listing it is on the business's own PagineGialle page, which the actor opens only with includeDetails on, or with includeEmails on for a row that has no directory email.
  • Opening hours come from the results page. The business pages we sampled had no hours of their own, so a business without hours on its card returns none.
  • No registration numbers. The actor does not return the partita IVA or any other registration number, even with includeDetails on.

Fill rates in the proof run (20 businesses, emails on): email 20, opening hours 17, website 5, rating 2. Every row had a phone, coordinates and a description.

Stable fields for automations

These fields were present in every one of the 20 rows of the proof run and in all 22 cards of the saved test pages (including page 7 of a Milano search and a small town), and their names will not change:

FieldWhat it holds
listing_idPagineGialle's name for the business page, the same in every run
listing_urlLink to the business's page on paginegialle.it
nameBusiness name as listed
categoriesThe category on the card, as a list
phoneThe first phone number, in international format
phonesEvery phone number in the listing
addressStreet, postcode and town on one line
postal_codeFive digit Italian postcode (CAP)
cityTown as PagineGialle writes it
regionItalian region, such as Lombardia
countryAlways IT
latitudeLatitude in decimal degrees
longitudeLongitude in decimal degrees
source_siteAlways paginegialle.it
scraped_atWhen the row was read (ISO 8601)

street, search_query and search_location were in every row too. description, opening_hours, website and rating depend on what the business published.

Output examples

Real rows from the proof run on 28 Sep 2026 (idraulico in Milano, emails on), trimmed where marked.

An email published on PagineGialle, with two phones, coordinates, rating and opening hours (the description is left out):

{
"listing_id": "meraviglia-canegrate",
"listing_url": "https://www.paginegialle.it/meraviglia-canegrate",
"name": "Meraviglia Egidio",
"categories": ["Idraulici e lattonieri"],
"phone": "+39 331 400 318",
"phones": ["+39 331 400 318", "+39 346 748 2879"],
"address": "Via Fratelli Bandiera, 30, 20039 Canegrate",
"street": "Via Fratelli Bandiera, 30",
"postal_code": "20039",
"city": "Canegrate",
"region": "Lombardia",
"country": "IT",
"latitude": 45.56739,
"longitude": 8.92975,
"email": "info@termoidraulicameraviglia.it",
"emails": ["info@termoidraulicameraviglia.it"],
"email_source": "directory",
"email_source_url": "https://www.paginegialle.it/meraviglia-canegrate",
"rating": 4,
"review_count": 1,
"opening_hours": ["Mo 15:00-19:00", "Tu 09:00-12:30", "Tu 15:00-19:00", "We 09:00-12:30", "We 15:00-19:00", "Th 09:00-12:30", "Th 15:00-19:00", "Fr 09:00-12:30", "Fr 15:00-19:00", "Sa 09:00-12:30"],
"source_site": "paginegialle.it",
"search_query": "idraulico",
"search_location": "Milano",
"scraped_at": "2026-09-28T12:46:47.138Z"
}

An email read from the business's own website, after the actor opened its PagineGialle page to find the website. This advertiser is based in Rome and appears in the Milano results (trimmed):

{
"listing_id": "edilizia-mancini-marco-roma",
"name": "Edilizia Mancini Marco",
"categories": ["Imprese edili"],
"phone": "+39 327 546 4943",
"address": "Via Dell' Aquila Reale, 25, 00169 Roma",
"region": "Lazio",
"website": "https://www.marcomanciniedilizia22.it",
"email": "ediliziamancini22@libero.it",
"email_source": "website",
"email_source_url": "https://www.marcomanciniedilizia22.it/",
"description": "Edilizia Mancini Marco: Soluzioni Chiavi in Mano nel Cuore di Roma, se cerchi affidabilità, competenza e un servizio completo per la tua casa."
}

A paid sponsor listing, which carries its website on the results page and shows the schema.org type as its category (trimmed):

{
"listing_id": "ig/idraulicoblindoserr",
"listing_url": "https://www.paginegialle.it/ig/idraulicoblindoserr",
"name": "Blindoserr Idraulico Pronto Intervento",
"categories": ["LocalBusiness"],
"phone": "+39 393 940 2060",
"address": "Via Francesco De Sanctis, 109/C, 10141 Torino",
"region": "Piemonte",
"website": "https://www.blindoserr.it",
"email": "srl.blindoserr@gmail.com",
"email_source": "directory",
"opening_hours": ["Su 00:00-23:59", "Mo 00:00-23:59", "Tu 00:00-23:59"]
}

A Milan firm with a Yahoo address on its listing, two phones and split opening hours (trimmed):

{
"listing_id": "albiero-snc-caldaie-e-scaldabagni-mi",
"name": "Albiero di Rachele Albiero e C. Idraulico Scaldabagni",
"categories": ["Idraulici e lattonieri"],
"phone": "+39 02 471175",
"phones": ["+39 02 471175", "+39 02 4895 5204"],
"address": "Via Curio Dentato, 1, 20146 Milano",
"latitude": 45.45721,
"longitude": 9.17265,
"email": "albierosnc@yahoo.com",
"email_source": "directory",
"opening_hours": ["Mo 08:00-12:30", "Mo 13:30-17:00", "Tu 08:00-12:30", "Tu 13:30-17:00"],
"description": "Albiero snc a Milano offre servizi di installazione, di manutenzione e di riparazione di scaldabagni a gas."
}

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:46:49.730Z"
}

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 fast connection and the unblocking proxy fallback are included.

EventFree planStarter (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, the email count depends on how deep you go: at the rate of our full 7 page Milano test (41 emails in 210 rows), 1,000 businesses bring about 195 emails, about $5.85 more on Free; taken only from first pages, as in the proof run, nearly every row can carry one, so plan for up to $30 per 1,000 rows on Free.

Never charged:

  • search pages the site refused, and the retries through the unblocking proxy;
  • a business already delivered by another search in the same run;
  • business pages and 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);
  • a place the actor does not recognise (nothing is searched);
  • the note row and the OUTPUT run 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 PagineGialle?

Italy's yellow pages, run by Italiaonline. It lists tradespeople, shops, restaurants, clinics, professionals and companies across Italy, with phone, address, opening hours and, for many businesses, an email and a website.

How many businesses can I get?

Up to 210 per search, because PagineGialle stops at page 7 (page 8 answers "not found"), and up to 300 searches per run. This held on both searches we measured, idraulici in Milano and ristoranti in Roma, each badged "più di 200". The count in the run summary is PagineGialle's own badge, a floor rather than an exact number once it passes 200. For more, search comune by comune. 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.

What do I type into Locations?

A comune by its official name (Milano, Cesenatico, Reggio nell'Emilia, Reggio di Calabria), a two letter province code for the whole province (MI, RM, TO), or a region (Lombardia, Lazio, Sicilia). Eight comune names exist in two regions (Calliano, Castro, Chiesanuova, Livo, Paterno, Peglio, Samone and San Teodoro): the bare name picks the region first in alphabetical order, so add the region after a comma (Calliano, Trentino Alto Adige) for the other one. One code clashes with a comune: RE finds the small comune of Re in Piedmont, not the province of Reggio Emilia, so type Reggio nell'Emilia or Emilia Romagna instead.

Why did a location return nothing?

The actor did not recognise it as an Italian comune, province code or region, so nothing was searched and nothing was charged beyond the start fee. Short forms such as Reggio Emilia are not in PagineGialle's own list; use the official name. The run summary names the place it could not find.

How fresh is the data?

Every run reads the site live; nothing comes from a cache. scraped_at on each row says when it was read.

Do I need a PagineGialle account, cookies or an API key?

No. The actor reads the public pages any visitor sees, without signing in. There is nothing of yours to connect.

Do I need to set up a proxy?

No. The actor first uses a fast connection that looks like a normal Chrome browser, through Apify's datacenter proxies, and retries a refused search page through Apify's unblocking proxy, both included in the price. On 28 Sep 2026 every page came over the fast connection. On 1 Oct 2026 PagineGialle refused every one of 33 test requests over that connection, while one request through the unblocking proxy returned a full results page in 7 seconds. Searches therefore still work, more slowly, with allowUnblockerFallback on (the default). Business pages are opened over the fast connection only, so while the site refuses it, includeDetails and the website lookup for listings without a directory email return less; after 10 refused business pages in a row the run stops opening them and delivers the rest from the results pages. Emails PagineGialle publishes on its results pages are not affected.

Will every business have an email?

No. About one business in five publishes an email on PagineGialle, and those are concentrated on the first page of each search: in our 28 Sep 2026 Milano test, page 1 gave 28 of 30, page 2 gave 13 of 30, and pages 3 to 7 gave none. For a row without one, the actor tries the business's own website. The actor never guesses an address from a name, and you pay nothing extra for a row without an email.

Which PagineGialle pages does it read?

The listing pages (/<region>/<place>/<category>.html and their /p-2.html to /p-7.html pages), and the business pages when needed. PagineGialle's robots.txt, as we read it on 28 Sep 2026, allows all of these for every crawler. It disallows the site's own filter links (aperto ora, prenotabile, richiedi preventivo are sent as ?f= parameters), so this actor offers no search filters.

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/paginegialle-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 paginegialle-business-email-scraper "https://mcp.apify.com/?tools=themineworks/paginegialle-business-email-scraper".

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 the site's terms and the GDPR, and where you send marketing messages also the Italian and EU ePrivacy rules (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 PagineGialle or Italiaonline.

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

Social media and video

Marketing, SEO and reviews

LinkedIn

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.

PagineGialle Scraper turns a trade and an Italian place into rows of businesses with phone, address, coordinates and opening hours and, when you want it, an email from the directory or the business's own website, checked for a working mail server.