Paginas Amarillas APIpaginasamarillas.es ↗
Search Spanish businesses, retrieve contact details, ratings, reviews, and restaurant listings from paginasamarillas.es via a structured REST API.
What is the Paginas Amarillas API?
This API provides access to business data from paginasamarillas.es, Spain's main business directory, across 5 endpoints. Use search_businesses to query by keyword and location and receive paginated results with IDs, addresses, and phone numbers. Separate endpoints cover restaurant search, full business profiles, customer reviews, and autocomplete suggestions for building location-aware search interfaces.
curl -X GET 'https://api.parse.bot/scraper/3e9e5c93-2b2b-4805-b15f-717e6b2169be/search_businesses?page=1&what=restaurantes&where=madrid' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace paginasamarillas-es-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Paginas Amarillas: search Spanish businesses, drill into details and reviews."""
from parse_apis.paginas_amarillas_api import PaginasAmarillas, BusinessNotFound
client = PaginasAmarillas()
# Search for restaurants in Madrid — limit caps total items fetched.
for biz in client.businesssummaries.search(what="restaurantes", where="madrid", limit=3):
print(biz.name, biz.activity, biz.address)
# Drill into a single result's full details.
first = client.businesssummaries.search(what="fontaneros", where="barcelona", limit=1).first()
if first:
detail = first.details()
print(detail.name, detail.phone, detail.email, detail.address)
for link in detail.social_links:
print(link.platform, link.url)
# Autocomplete suggestions for location search.
for suggestion in client.businesssummaries.suggest(query="madri", is_what=False, limit=5):
print(suggestion)
# Reviews sub-resource on a business summary.
if first:
for review in first.reviews.list(limit=3):
print(review.content, review.total_likes, review.date_created)
# Typed error handling for a missing business.
try:
gone = client.businesssummaries.search(what="cerrado", where="madrid", limit=1).first()
if gone:
gone.details()
except BusinessNotFound as exc:
print(f"Business removed: {exc.business_url}")
print("exercised: search / suggest / details / reviews.list / BusinessNotFound")
Search for businesses by keyword and location. Returns a paginated list of businesses with approximately 28-30 results per page. Clients should check total_results and has_next before requesting higher pages.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| whatrequired | string | Search keyword (e.g. 'restaurantes', 'fontaneros') |
| whererequired | string | Location (e.g. 'madrid', 'barcelona') |
{
"type": "object",
"fields": {
"page": "integer current page number",
"results": "array of business objects with id, name, activity, address, phone, url, is_free",
"has_next": "boolean indicating if more pages are available",
"total_results": "integer total number of matching businesses"
},
"sample": {
"data": {
"page": 1,
"results": [
{
"id": "S00423979_000",
"url": "https://www.paginasamarillas.es/f/madrid/la-daniela-cuchilleros_195495346_000000002.html",
"name": "La Daniela Cuchilleros",
"phone": "",
"address": "Calle de los Cuchilleros, 9, 28005, Madrid",
"is_free": false,
"activity": "Cocina castellana"
}
],
"has_next": true,
"total_results": 3603
},
"status": "success"
}
}About the Paginas Amarillas API
Search and Discovery
The search_businesses endpoint accepts two required parameters — what (a keyword like fontaneros or abogados) and where (a city or region like madrid) — and returns up to 28–30 results per page. Each result includes id, name, activity, address, phone, url, and an is_free flag. Use total_results and has_next to paginate through the full result set. The get_search_suggestions endpoint complements this by returning up to 5 autocomplete strings for partial queries; set is_what to true to autocomplete business types, or false to autocomplete locations.
Business Profiles and Reviews
get_business_details takes a full business URL and returns a richer profile: email, website, hours (as an array of day/time objects), social_links (platform and URL pairs), activities, rating, and address. Note that rating, hours, and activities may be null or empty — coverage depends on how complete the individual listing is. get_business_reviews accepts either a full business URL or a numeric container_id and returns review objects sorted newest-first, each carrying content, date_created, total_likes, total_dislikes, total_replies, and is_pinned. A more_available boolean indicates whether additional reviews exist beyond the requested limit.
Restaurant-Specific Search
search_restaurants targets restaurant listings specifically and adds optional cuisine (e.g. cocina-italiana) and price filter parameters on top of the required location field. The response shape mirrors search_businesses. Be aware that cuisine and price filters may not be applied consistently across all locations — validate results against filter intent before relying on them in production.
The Paginas Amarillas API is a managed, monitored endpoint for paginasamarillas.es — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when paginasamarillas.es changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official paginasamarillas.es API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a Spain business finder using search_businesses with keyword and city inputs
- Aggregate contact details (phone, email, website, social links) from business profiles for lead generation
- Display customer sentiment by pulling review content, likes, and dislikes via get_business_reviews
- Power a restaurant discovery app filtered by cuisine type using search_restaurants
- Implement location and category autocomplete in a search UI with get_search_suggestions
- Monitor business listing completeness by checking null fields like rating, hours, and email across profiles
- Collect opening hours data for businesses in a specific Spanish city or region
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.