OLX APIolx.pl ↗
Search OLX.pl classified ads by keyword, price, condition, location, and delivery options. Get structured listing data including title, price, and condition.
What is the OLX API?
The OLX.pl API exposes 1 endpoint — search_listings — that returns structured classified ad data from Poland's largest general marketplace. A single call yields up to 40 listings per page with fields covering title, price, location, item condition, and delivery availability, all filterable by keyword, category path, geographic radius, seller type, and price range.
curl -X GET 'https://api.parse.bot/scraper/8c514d98-ca32-4d17-87b3-6151302b166a/search_listings?page=1&sort=created_at%3Adesc&query=laptop&courier=true&category=elektronika&distance=10&location=warszawa&condition=used&price_max=600&price_min=100&photos_only=true&private_business=private' \ -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 olx-pl-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.
"""Walkthrough: OLX Poland SDK — bounded, re-runnable; every call capped."""
from parse_apis.olx_pl_api import Olx, Sort, Condition, SellerType, CategoryNotFound
client = Olx()
# Search for used MSI motherboards near Warsaw, cheapest first
for listing in client.search_results.search(
query="MSI płyta główna",
category="elektronika/komputery/podzespoly-i-czesci/plyty-glowne",
location="warszawa",
distance="5",
condition=Condition.USED,
sort=Sort.CHEAPEST,
private_business=SellerType.PRIVATE,
limit=3,
):
print(listing.title, listing.price, listing.location)
# Drill-down: take the first listing
item = client.search_results.search(
query="laptop",
sort=Sort.NEWEST,
limit=1,
).first()
# Handle a potentially invalid category
try:
for listing in client.search_results.search(
category="nonexistent-xyz",
query="test",
limit=1,
):
print(listing.title)
except CategoryNotFound as e:
print(f"category gone: {e}")
print("exercised: search_results.search")
Full-text search across OLX.pl classified ads. Supports filtering by category path, geographic location with radius, price range, item condition, seller type, delivery availability, and photo requirement. Results are paginated with ~40 listings per page and auto-iterated by the SDK. Promoted/featured listings appear at the top of results regardless of sort order.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). |
| sort | string | Sort order for results. Omit for recommended/default ordering. |
| query | string | Search keywords (e.g. 'MSI płyta główna', 'laptop', 'rower'). |
| courier | boolean | When true, return only listings offering delivery from entirety of Poland (courier/shipping). |
| category | string | Category path slug (e.g. 'elektronika', 'elektronika/komputery', 'elektronika/komputery/podzespoly-i-czesci/plyty-glowne'). Omit to search all categories. |
| distance | string | Search radius in km from location (e.g. '5', '10', '25', '50', '75', '100'). Only effective when location is set. |
| location | string | Location slug — city (e.g. 'warszawa', 'krakow'), region (e.g. 'malopolskie'), or district. Omit to search all of Poland. |
| condition | string | Item condition filter. Comma-separated for multiple values (e.g. 'used,new'). |
| price_max | string | Maximum price in PLN (e.g. '600'). |
| price_min | string | Minimum price in PLN (e.g. '100'). |
| photos_only | boolean | When true, return only listings that have photos. |
| private_business | string | Filter by seller type. Omit for all sellers. |
{
"type": "object",
"fields": {
"page": "current page number",
"listings": "array of listing objects with id, title, price, location, condition, delivery info",
"total_count": "estimated total number of matching listings",
"total_pages": "total number of available pages"
},
"sample": {
"data": {
"page": 1,
"listings": [
{
"id": "1085997333",
"url": "https://www.olx.pl/d/oferta/msi-x470-pro-carbon-gaming-am4-amd-ddr4-plyta-glowna-atx-CID99-ID1buJv1.html?search_reason=search%7Cpromoted",
"date": "17 lipca 2026",
"price": "600 złdo negocjacji",
"title": "MSI X470 PRO CARBON Gaming AM4 AMD DDR4 Plyta główna ATX",
"location": "Wrocław, Psie Pole",
"condition": "Używane",
"image_url": "https://ireland.apollo.olxcdn.com:443/v1/files/pfco3ms5esbh1-PL/image;s=216x152;q=50",
"negotiable": true,
"is_promoted": true,
"has_delivery": true
},
{
"id": "894045889",
"url": "https://www.olx.pl/d/oferta/myszka-msi-z-oswietleniem-rgb-CID99-IDYwkaZ.html?search_reason=search%7Corganic",
"date": "17 lipca 2026",
"price": "100 zł",
"title": "Myszka msi z oświetleniem rgb",
"location": "Końskie",
"condition": "Używane",
"image_url": "https://ireland.apollo.olxcdn.com:443/v1/files/t64knnzb8f3t-PL/image;s=216x152;q=50",
"negotiable": false,
"is_promoted": false,
"has_delivery": true
}
],
"total_count": 209,
"total_pages": 6
},
"status": "success"
}
}About the OLX API
What the API Returns
The search_listings endpoint queries OLX.pl's classified inventory and returns an array of listing objects alongside pagination metadata. Each listing includes an id, title, price, location, condition, and delivery information. The total_count field gives an estimated match count across all pages, and total_pages tells you how many pages of results exist for the current query.
Filtering Options
The endpoint accepts a query parameter for full-text keyword search (e.g. MSI płyta główna). You can scope results to a specific category using OLX.pl's hierarchical path slugs — for example elektronika/komputery/podzespoly-i-czesci/plyty-glowne — and combine that with a location slug such as warszawa or krakow. The distance parameter (in km: 5, 10, 25, 50, 75, 100) adds a geographic radius when a location is set. Price filtering is handled by min_price and max_price inputs. The condition field accepts comma-separated values like used,new.
Seller and Delivery Filters
Passing courier=true restricts results to listings offering nationwide courier/shipping, which is useful when buyer location is irrelevant. A separate seller-type filter lets you limit results to private individuals rather than businesses. These filters can be combined freely with keyword, category, and location parameters.
Pagination
Results are paginated at approximately 40 listings per page. Use the page parameter (1-based) to step through result sets. The total_pages field in the response indicates the upper bound. The sort parameter accepts order values such as ascending price to control result ordering.
The OLX API is a managed, monitored endpoint for olx.pl — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when olx.pl 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 olx.pl 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?+
- Monitor resale prices for specific PC components (e.g. MSI motherboards) across Warsaw listings
- Aggregate used electronics inventory by category and condition to track supply trends
- Build a price-alert tool that checks OLX.pl for listings within a target price range
- Compare private-seller vs. business-seller pricing for the same product category
- Find courier-eligible listings nationwide for items the buyer wants shipped
- Scrape location-specific listings to map secondhand goods availability across Polish cities
- Track listing volume over time by repeatedly querying total_count for a given query and category
| 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.
Does OLX.pl have an official developer API?+
What does the `search_listings` endpoint actually return per listing?+
listings array includes the ad's id, title, price, location, condition, and delivery information. The response also includes total_count (estimated matches) and total_pages for pagination control.Can I retrieve the full detail page for a single listing — including seller contact info or all photos?+
How does the geographic filtering work, and what are its limits?+
location to a city or region slug (e.g. warszawa, malopolskie) and optionally set distance to a radius in km. If location is omitted, distance has no effect and the search covers all of Poland. Very small radius values (e.g. 5 km) may return fewer results in less densely populated areas.