# OLX International Classifieds Scraper (`parseforge/olx-scraper`) Actor

Scrapes OLX classified listings from seven countries. Returns each ad as a flat row with title, price, description, location, and seller details.

- **URL**: https://apify.com/parseforge/olx-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** E-commerce, Real estate
- **Stats:** 33 total users, 9 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $13.50 / 1,000 result items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### OLX International Classifieds Scraper

**Scrape OLX classifieds from Poland, Ukraine, Romania, Portugal, Bulgaria, Kazakhstan, and Uzbekistan, up to a million listings per run.** Every listing comes with its title, price, location, seller type, and full description. No login or API key. Export to CSV, JSON, Excel, or XML.

OLX is the dominant classifieds platform across Central and Eastern Europe, but its data is spread across seven separate country marketplaces with no unified API. Manually copying listings for market analysis, price monitoring, or lead generation is slow and error-prone. This Actor reads the public listing feeds directly, letting you pull structured data from any OLX country, category, or keyword search in one fixed schema.

| Who uses it | What they scrape OLX for |
|---|---|
| Market researchers | Track supply, demand, and average prices for a product category across multiple countries. |
| E-commerce sellers | Monitor competitor pricing and inventory levels on OLX to adjust their own listings. |
| Data analysts | Build datasets of second-hand goods prices to feed into economic models or reports. |
| Lead generation specialists | Find private sellers listing high-value items to offer consignment or direct purchase services. |

### What it does

This Actor collects OLX classified listings by country, category, keyword search, or direct URL, and returns each one as a flat row with its title, price, description, location, and seller details.

- 🌍 **Seven country marketplaces:** scrape OLX in Poland (olx.pl), Ukraine (olx.ua), Romania (olx.ro), Portugal (olx.pt), Bulgaria (olx.bg), Kazakhstan (olx.kz), and Uzbekistan (olx.uz).
- 🔍 **Keyword and category search:** target listings by free-text keyword, a specific OLX category from the full tree, or both together.
- 📍 **Geographic filtering:** narrow results to a specific region or city within the chosen country.
- 💰 **Price range filter:** set minimum and maximum prices in the local currency to isolate listings within a budget.
- 🏷️ **Condition and seller type:** filter by item condition (new, used, damaged) and seller type (private or business).

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with OLX data

**📊 Monitor second-hand car prices.**

A market analyst scrapes all used Audi listings in Poland and Romania weekly to track price depreciation trends and regional differences.

**🏠 Find rental apartments in a specific city.**

A relocation service scrapes apartment listings in Warsaw, filtering by the 'Wynajem' category and a max price, to build a curated list for clients.

**📱 Track competitor pricing for electronics.**

An online electronics reseller scrapes iPhone listings across multiple OLX countries daily to benchmark their own prices against the second-hand market.

**🐶 Identify popular dog breeds for sale.**

A pet supply business scrapes the 'Psy' category in Poland to see which breeds are listed most often and at what price points, informing their inventory strategy.

### Why choose this scraper

|  | What you get |
|---|---|
| **Consistent schema** | All listings from all seven countries are returned in one uniform, flat structure. |
| **Full listing text** | Captures the complete title, description, and all structured attributes of each ad. |
| **Flexible targeting** | Combine country, category, keyword, region, city, price range, condition, and seller type. |
| **Scalable volume** | Collect up to a million listings in a single run for large-scale market analysis. |

### How it compares

No other Store actor targets OLX the same way, so the honest comparison is with the alternatives teams actually weigh.

| | OLX International Classifieds Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When OLX changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor from a country selection, a search URL, or a combination of keyword, category, region, and city, and filters run as each listing is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "maxItems": 10
}
```

A larger pull:

```json
{
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.018 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $1.80 |
| 1,000 results | $18.00 |
| 10,000 results | $180.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [OLX International Classifieds Scraper](https://apify.com/parseforge/olx-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to OLX through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/olx-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that your keyword and category combination is valid for the selected country. A keyword that returns results in Poland might not exist in Ukraine. Try broadening your search by removing the keyword or category filter.

**The Actor is returning listings from the wrong country.**

The 'Country' field is overridden if you select a 'Category' or 'Region' with a different country code prefix, or if you paste a 'startUrl' from another country. Ensure all your filters are set for the same target country.

**Some listings are missing a price or description.**

This is normal. Some sellers on OLX list items with a negotiable price or leave the description field blank. The Actor returns whatever data is publicly available on the listing page.

**The run is taking a very long time.**

A high 'Maximum listings' value combined with a broad search can take time. Reduce the maximum items, or narrow your search with a more specific keyword, category, or price range to speed up the run.

**I get an error when using a city name.**

The city name must be spelled correctly in the local language (e.g., 'Warszawa' not 'Warsaw'). If the city name is ambiguous, also select the 'Region' to help the Actor resolve the correct location.

### FAQ

| Question | Answer |
|---|---|
| Which OLX countries does this scraper support? | It supports Poland (olx.pl), Ukraine (olx.ua), Romania (olx.ro), Portugal (olx.pt), Bulgaria (olx.bg), Kazakhstan (olx.kz), and Uzbekistan (olx.uz). |
| Can I scrape a specific OLX category without a keyword? | Yes. Leave the search term field empty and select a category from the dropdown. The Actor will return every listing in that category for the chosen country. |
| How do I scrape listings from a specific city? | Use the 'City name' input field. The Actor resolves the city name to the correct OLX city ID automatically. You can combine it with the 'Region' filter for more precision. |
| What data fields are returned for each listing? | Each row includes the title, price, currency, full description, listing URL, publication date, location, seller name, seller type, item condition, and any other attributes visible on the listing page. |
| Can I filter listings by price? | Yes. Set the 'Min Price' and 'Max Price' fields in the input to return only listings within that range, using the local currency of the selected country. |
| Is it possible to scrape only listings from private sellers? | Yes. Set the 'Seller Type' filter to 'Private seller' to exclude business and dealer listings from your results. |
| How many listings can I scrape in one run? | You can set the 'Maximum listings' input to any number up to 1,000,000. The Actor will stop gracefully once it reaches that limit. |
| Do I need an OLX account or API key to use this? | No. The Actor reads the publicly available listing pages, so no login, account, or API key is required. |
| Can I scrape listings from multiple countries at the same time? | A single Actor run targets one country at a time. To scrape multiple countries, run the Actor multiple times with different 'Country' settings, or use multiple tasks. |
| What output formats are supported? | You can export your scraped dataset in CSV, JSON, Excel, or XML format from the Apify platform. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by OLX Group. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `startUrl` (type: `string`):

Optional. Paste any OLX search or category URL (e.g. https://www.olx.pl/elektronika/telefony/q-iphone/). Country, keyword, category, region, city and price are parsed from the URL. The structured filters below override URL values when set.

## `country` (type: `string`):

OLX regional marketplace to scrape. Each country has its own listings, currency and categories. Ignored when a Category, Region or search URL from another country is set.

## `maxItems` (type: `integer`):

How many listings to collect per run.

## `query` (type: `string`):

Free-text keyword (e.g. 'iphone', 'apartament', 'BMW e46'). Matches title and description in the chosen country's language.

## `category` (type: `string`):

Category to scrape, picked from the OLX tree of each market. The country code prefix (e.g. PL, UA) sets which marketplace is used and overrides the Country field above. Leave empty to span every category.

## `region` (type: `string`):

Limit results to one OLX region/province. The country code prefix overrides the Country field. Leave empty for nationwide results.

## `cityName` (type: `string`):

City to scope the search (e.g. 'Warszawa', 'Kyiv', 'Bucuresti'). Resolved to an OLX city automatically - no IDs to look up. Combine with Region to disambiguate same-named towns.

## `priceMin` (type: `integer`):

Minimum price in the local currency (PLN, UAH, RON, EUR, BGN, KZT, UZS).

## `priceMax` (type: `integer`):

Maximum price in the local currency.

## `itemState` (type: `string`):

Filter by listed item condition.

## `sellerType` (type: `string`):

Restrict to private individuals or business sellers (dealers, shops).

## `sortBy` (type: `string`):

Result ordering. Newest first matches the default OLX sort.

## Actor input object example

```json
{
  "country": "PL",
  "maxItems": 10,
  "itemState": "any",
  "sellerType": "any",
  "sortBy": "created_at:desc"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/olx-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/olx-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10
}' |
apify call parseforge/olx-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/olx-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/xDHKbZfzreetFKyeX/builds/5sBwxsLHabPj09Fol/openapi.json
