Páginas Amarelas / pai.pt Scraper
Pricing
from $5.00 / 1,000 results
Páginas Amarelas / pai.pt Scraper
Scrape pai.pt (Páginas Amarelas Portugal) into structured business rows: name, phone, email when listed, website, address, hours. Keyword plus city, nationwide PT, or a search/profile URL. JSON or CSV out. $5 per 1,000 listings.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
17
Total users
17
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape pai.pt (Páginas Amarelas Portugal) into one row per business: name, phone, email when listed, website, address, opening hours.
Works from a keyword plus optional city, a nationwide term, or a pasted /searches or /paginas/{id} URL. Search cards and profile JSON-LD answer without Apify Proxy.
Pricing: $0.005 per listing (pushData). Extra contact-phone $0.002 and contact-email $0.05 when those fields are present.
Why use this scraper?
- Phone, address, category, and hours sit on the search card.
- Profile pages add email (mailto), coordinates, and the business website when Páginas Amarelas publishes them.
- Nationwide query or a city resolved through
/location_suggestions. - Optional harvest of the business site when the directory has no inbox.
Overview
Built for lead lists and local research on Portuguese companies. Each dataset item is one listing from pai.pt. paginasamarelas.pt redirects to the same host and is accepted as a start URL.
Supported inputs
| Input | What it does |
|---|---|
searchTerms | What you type in Páginas Amarelas, e.g. restaurante, canalizador |
locations | City resolved via location suggestions. Empty = nationwide |
startUrls | https://www.pai.pt/searches?... or /paginas/{id}-{slug} |
maxItems | Stop after N unique listings (free plan cap 50) |
harvestWebsiteEmail | Fetch the business site if pai.pt has no inbox |
proxy | Leave off |
Unsupported: Páginas Amarelas Spain (paginasamarillas.es — that is a different actor), Ireland Golden Pages, sales-only /empresas pages.
Use cases
| Who | Why |
|---|---|
| Sales / agencies | Portuguese phones and emails from a category |
| Researchers | Hours, city, and postcode coverage |
| SEO / maps | Website + coordinates per listing |
How it works
- Build
https://www.pai.pt/searches?search[query]={term}(city +location_idwhen set). Page N is&page=N. - Parse
.card.card--resultfor name, phone, address, hours (data-schedule). - Open
/paginas/{id}-{slug}for LocalBusiness JSON-LD, mailto, and website. - Charge
contact-phone/contact-emailafterpushData. - If still no email and harvest is on, fetch the business homepage/contact page.
Input configuration
| Field | Type | Required | Notes |
|---|---|---|---|
searchTerms | string[] | one of terms/URLs | e.g. restaurante |
locations | string[] | no | e.g. Lisboa |
startUrls | url[] | no | /searches or /paginas/ |
maxItems | integer | no | default 50 |
maxPages | integer | no | default 20 |
scrapeDetails | boolean | no | default true |
harvestWebsiteEmail | boolean | no | default true |
maxConcurrency | integer | no | default 5 |
proxy | proxy | no | default off |
Example input
{"searchTerms": ["restaurante"],"locations": ["Lisboa"],"maxItems": 10,"harvestWebsiteEmail": false,"proxy": { "useApifyProxy": false }}
Output overview
One JSON object per business. Search cards already carry phone, address, category, and hours. Profile pages add email and coordinates when present.
Output samples
restaurante in Lisboa, profile merge (fields trimmed):
{"listingId": "428034","name": "Restaurante Sashimi","phone": "965557446","email": "restsashimi@gmail.com","street": "Rua Teresa Jesus Pereira 35B","postalCode": "2560-364","city": "TORRES VEDRAS","country": "PT","hours": ["MO 12:00-15:00", "MO 19:00-23:00"],"profileUrl": "https://www.pai.pt/paginas/428034-restaurante-sashimi"}
Key output fields
| Field | Notes |
|---|---|
listingId | Numeric pai.pt id |
phone / phones | From tel: and JSON-LD |
email | Profile mailto, then optional website harvest |
website | Independent site (visit-webpage), not pai.pt |
hours | MO 12:00-15:00 lines from data-schedule |
latitude / longitude | Profile geo |
FAQ
Do I need a proxy? Not on current HTML. Turn one on only if a run comes back empty or challenged.
Does a city filter work? Yes. The actor hits /location_suggestions and prefers the municipality data-id.
Why is email missing? Many profiles only publish a phone. Harvest the business website, or accept phone-only rows.
Support
Questions and issues on the actor page.
Disclaimer
Use this actor in line with Páginas Amarelas terms and applicable law. You are responsible for how you store and contact the people and companies in the dataset.
SEO Keywords
paginas amarelas scraper, pai.pt scraper, portugal yellow pages, páginas amarelas leads, portuguese business emails, lisboa directory scraper