OLX Portugal Classifieds Scraper avatar

OLX Portugal Classifieds Scraper

Pricing

from $0.02 / 1,000 result extracteds

Go to Apify Store
OLX Portugal Classifieds Scraper

OLX Portugal Classifieds Scraper

Scrape public OLX.pt classifieds from category/search pages. Export prices, locations, images, seller details, and listing URLs.

Pricing

from $0.02 / 1,000 result extracteds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

2

Monthly active users

9 days ago

Last modified

Categories

Share

Scrape public OLX.pt classified listings from category pages, search result pages, and keyword searches. Export listing URLs, titles, prices, locations, dates, images, source pages, and optional detail-page enrichment in a clean dataset ready for spreadsheets, BI tools, CRMs, or automations.

What does OLX Portugal Classifieds Scraper do?

OLX Portugal Classifieds Scraper collects public listing data from OLX.pt, one of Portugal's most active classified marketplaces.

It can scrape:

  • 🏠 Real estate category pages
  • πŸš— Car and vehicle listings
  • πŸ“± Electronics and consumer goods searches
  • 🧰 Services and local offers
  • πŸ”Ž Any public OLX.pt search URL you provide

The actor starts from OLX category URLs or a keyword search, follows pagination, extracts listing cards, and saves structured results to the default Apify dataset.

Who is it for?

This scraper is useful for teams that need repeatable OLX Portugal marketplace data.

  • 🏘️ Real estate analysts monitoring rental and sale supply in Portuguese cities
  • πŸš™ Vehicle price researchers tracking used car offers by region
  • πŸ›’ Marketplace intelligence teams comparing second-hand prices and availability
  • πŸ“ˆ Growth and lead-generation teams finding public seller opportunities
  • πŸ§ͺ Data analysts building market snapshots from public classified listings
  • πŸ€– Automation builders feeding OLX listings into alerts, CRMs, or dashboards

Why use this OLX.pt scraper?

Manual OLX research is slow and difficult to repeat. This actor gives you structured data with consistent fields and pagination controls.

Benefits:

  • ⚑ Fast HTTP-based scraping, no browser required for the main listing mode
  • 🧾 Clean JSON output with price, currency, location, images, and page metadata
  • πŸ” Repeatable runs for monitoring the same categories or searches
  • 🎯 Supports both ready-made OLX URLs and keyword searches
  • 🧩 Works with Apify API, webhooks, datasets, integrations, and MCP tools

What data can you extract from OLX Portugal?

The default dataset contains one row per OLX listing.

FieldDescription
listingIdOLX card ID or ID parsed from the listing URL
urlCanonical OLX listing URL
titlePublic listing title
priceTextPrice as displayed on OLX
priceParsed numeric price when available
currencyCurrency code, usually EUR
locationPublic location text from the card
postedAtOriginal Portuguese posted, updated, or promoted date text
postedAtIsoISO timestamp when the displayed date and time can be normalized safely
categoryPathPer-row pathname derived from the OLX source URL
imageUrlMain listing image URL
imageUrlsImage URLs parsed from the listing card
sellerNamePublic seller name when detail mode finds it
sellerTypePublic seller type when visible
descriptionDetail-page description when detail mode is enabled
attributesVisible detail-page parameters when found
isPromotedWhether the card appears promoted/top-listed
detailStatusnot_requested, fetched, or failed for detail enrichment
detailErrorSafe failure category when detail enrichment failed
sourceUrlOLX page where the listing was found
pageSearch result page number
scrapedAtISO timestamp of extraction

How much does it cost to scrape OLX Portugal classifieds?

This actor uses pay-per-event pricing:

  • Run start: $0.005 per run.
  • Per listing: $0.000030423 on Free and Starter/BRONZE, with lower rates on higher Apify plans.
Plan tierPrice per listingListing charge for 1,000
Free$0.000030423$0.0304
Starter / BRONZE$0.000030423$0.0304
Scale / SILVER$0.00002373$0.0237
Business / GOLD$0.000018254$0.0183

You control cost with maxResults and maxPages. For a first run, keep the prefilled limit around 20 listings. Larger monitoring jobs can increase the limit after you confirm the output fits your workflow.

How to scrape OLX.pt listings

  1. Open the actor on Apify.
  2. Paste one or more OLX.pt category or search URLs into OLX.pt category or search URLs.
  3. Set Maximum listings.
  4. Keep Open detail pages disabled for the fastest card-only run.
  5. Enable detail pages only if you need descriptions, seller names, or attributes.
  6. Click Start.
  7. Download the dataset as JSON, CSV, Excel, XML, RSS, or HTML.

Input options

OLX.pt category or search URLs

Use this when you already have OLX result pages. Inputs are validated and must use olx.pt or an OLX.pt subdomain; unsupported hosts fail with an actionable error instead of being requested.

https://www.olx.pt/imoveis/
https://www.olx.pt/carros-motos-e-barcos/
https://www.olx.pt/ads/q-iphone/

Search keyword

If startUrls is empty, the actor can build an OLX keyword URL from searchQuery, such as:

iphone
apartamento lisboa
bicicleta estrada

Fallback category path

If both startUrls and searchQuery are empty, the actor uses categoryPath, defaulting to /imoveis/.

Maximum listings

The global cap for saved rows. The actor stops as soon as this number is reached.

Open detail pages

When enabled, the actor opens each listing URL and tries to extract description, seller name/type, and public attributes. Detail pages use the same bounded retry and Portugal residential-proxy fallback as result pages. A failed detail request never drops the card row: inspect detailStatus and the optional safe detailError category.

Detail mode is slower because it makes one extra request per listing. detailConcurrency controls how many detail pages run at once (default 5, range 1–20). Lower it for gentler, lower-memory monitoring runs.

Normalized dates

postedAt keeps OLX's Portuguese display text. postedAtIso is added only when the value includes an unambiguous date and time, using one run-level reference time and the Europe/Lisbon timezone. Promotion-only dates and unsupported or ambiguous labels remain unset rather than being guessed.

Example input

{
"startUrls": [
{ "url": "https://www.olx.pt/imoveis/" }
],
"maxResults": 30,
"includeDetails": false,
"detailConcurrency": 5,
"maxPages": 3,
"maxRequestRetries": 3
}

Example output

{
"listingId": "669245007",
"url": "https://www.olx.pt/d/anuncio/quarto-da-natureza-IDJi5cj.html",
"title": "Quarto da Natureza",
"priceText": "350 €",
"price": 350,
"currency": "EUR",
"location": "Carregado E Cadafais",
"postedAt": "Para o topo a 14 de maio de 2026",
"categoryPath": "/imoveis/",
"detailStatus": "not_requested",
"imageUrl": "https://ireland.apollo.olxcdn.com/.../image;s=216x152;q=50",
"isPromoted": true,
"sourceUrl": "https://www.olx.pt/imoveis/",
"page": 1,
"scrapedAt": "2026-05-17T08:00:00.000Z"
}

Tips for better OLX scraping

  • 🎯 Use specific category URLs when possible.
  • πŸ”Ž Use keyword search for product monitoring.
  • πŸ“‰ Start with a low maxResults value to verify your query.
  • ⚑ Leave detail pages off for fast list monitoring.
  • 🧾 Turn detail pages on only when descriptions or seller fields matter, and tune detailConcurrency for the workload.
  • πŸ” Schedule the actor to monitor categories over time; use postedAtIso, detailStatus, and sourceUrl as monitoring guardrails.
  • πŸ“ Use separate runs for different cities or categories to keep analysis clean.

Integrations and workflows

You can connect this actor to common Apify workflows:

  • Send new OLX listings to Google Sheets.
  • Push real estate listings to Airtable for review.
  • Trigger Slack alerts when new listings match a query.
  • Export daily vehicle prices to a data warehouse.
  • Feed marketplace intelligence dashboards with fresh CSV files.
  • Use webhooks to launch downstream enrichment actors.

API usage: using the OLX scraper with the Apify API

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/olx-portugal-classifieds-scraper').call({
startUrls: [{ url: 'https://www.olx.pt/imoveis/' }],
maxResults: 30,
includeDetails: false
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/olx-portugal-classifieds-scraper').call(run_input={
'startUrls': [{'url': 'https://www.olx.pt/imoveis/'}],
'maxResults': 30,
'includeDetails': False,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~olx-portugal-classifieds-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"startUrls":[{"url":"https://www.olx.pt/imoveis/"}],"maxResults":30,"includeDetails":false}'

Use with AI agents via MCP

OLX Portugal Classifieds Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).

Setup for Claude Code:

$claude mcp add --transport http apify "https://mcp.apify.com/?tools=automation-lab/olx-portugal-classifieds-scraper"

Setup for Claude Desktop, Cursor, or VS Code:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=automation-lab/olx-portugal-classifieds-scraper"
}
}
}

Your AI assistant will authenticate with your Apify account on first use. You can then reference automation-lab/olx-portugal-classifieds-scraper in prompts.

Example prompts:

  • "Use automation-lab/olx-portugal-classifieds-scraper to collect 50 OLX.pt apartment listings in Lisbon and summarize prices."
  • "Run the OLX Portugal scraper for iPhone listings and identify the cheapest offers."
  • "Scrape OLX Portugal real estate listings and create a CSV grouped by location."

Dependencies, data handling, and retention

The actor uses deterministic HTTP requests and local parsing; it does not call an AI model or send data to an AI provider. Public OLX.pt pages are the source dependency. Direct requests are preferred, with a bounded Apify residential-proxy fallback using a Portugal exit when transient blocking persists.

Inputs, public source URLs, and normal HTTPS metadata may transit Apify infrastructure. Results and logs stay in the run's Apify storage under your account retention settings; the actor creates no external result cache or separate database. You can delete runs, datasets, and logs through Apify Console or API controls. Proxy credentials and raw request errors are never written to output.

OLX is a trademark of its owner. This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by OLX.

Support

For reproducible problems, use the Actor's Issues tab on Apify and include a sanitized input, run ID, expected behavior, and the observed detailStatus/detailError values. Never include account credentials or private contact data.

This actor extracts publicly available listing information from OLX.pt pages. You are responsible for using the output lawfully and respecting applicable rules, privacy requirements, and platform terms.

Do not use this actor to scrape private account data, bypass login protections, spam sellers, or make automated decisions that require legal review.

Limitations

  • OLX page markup can change, so selectors may need maintenance over time.
  • Some fields are only available on detail pages; detailStatus=failed means card data was preserved after detail recovery was exhausted.
  • postedAtIso is intentionally absent for ambiguous, unsupported, or promotion-only date labels.
  • Start URLs must use OLX Portugal hosts. Seller phone numbers and private contact details are not collected.
  • Search availability depends on what OLX publicly shows for your query.
  • Very broad searches may require more pages and a higher maxResults limit.

FAQ and troubleshooting

How fast is the OLX Portugal scraper?

Card-only HTTP runs usually finish faster than detail mode because no browser or per-listing detail request is needed. Runtime varies with the result limit, OLX response times, retries, and whether proxy fallback is required.

How much does it cost to scrape OLX.pt?

The actor charges a small run-start fee plus a per-listing event. Use maxResults to cap the total cost of each run.

Does OLX Portugal have an official API?

This actor is designed for public OLX.pt pages when you need export-ready listing data and Apify integrations without building your own scraper.

Why did I get fewer listings than requested?

The selected OLX category or search may have fewer visible results, repeated promoted cards, or pagination limits. Try a broader query or increase maxPages.

Why are descriptions empty?

Descriptions require includeDetails: true. In card-only mode, the actor does not open listing pages. In detail mode, check detailStatus: fetched means the page was retrieved even if OLX did not expose a description, while failed includes a safe detailError category.

Why is price missing?

Some OLX ads show negotiable, free, exchange, or contact-only pricing. In those cases priceText may be present while numeric price is empty.

Explore other Automation Lab actors for marketplace, ecommerce, real estate, and lead-generation workflows:

Changelog

2026-09-22

More reliable detail enrichment with bounded concurrency and shared retry/proxy recovery, explicit per-row detail outcomes, monitoring-ready ISO timestamps, per-source path provenance, and OLX.pt URL validation.

Initial release

OLX.pt category/search scraping, pagination, listing-card extraction, optional detail enrichment, and structured dataset output.