Otodom scraper API: search results as JSON
Send any Otodom page URL with recipe=otodom and get title, price, location and 8 more fields as JSON. No selectors to write, no proxies to pick.
- 1 page type
- 11 fields
- 5 credits a page · $0.50 per 1,000
- Working · 100% in 7 days
5,000 free credits for 7 days, no card.
curl -G 'https://api.ujeebu.com/scrape' \
-H "ApiKey: $UJEEBU_API_KEY" \
--data-urlencode 'url=https://www.otodom.pl/pl/wyniki/sprzedaz/mieszkanie/cala-polska' \
--data-urlencode 'recipe=otodom'
{
"result": {
"location": "Muranów, Śródmieście, Warszawa, mazowieckie",
"area_m2": 35.3,
"currency": "PLN",
"estate": "FLAT"
},
"success": true
}
What you get from Otodom
The fields of each page type and a real sample from our last validation, shortened.
Search and listing pages recipe=otodom 5 credits a page
| Field | Type | Example |
|---|---|---|
listings | list of 3+ items | |
listings[].area_m2 | number | 35.3 |
listings[].currency | text | PLN |
listings[].estate | text | FLAT |
listings[].image | URL | https://ireland.apollo.olxcdn.com/v1/files/eyJhbGciOiJIUzI1NiIsInR5... |
listings[].location | text | Muranów, Śródmieście, Warszawa, mazowieckie |
listings[].price | number | 670000 |
listings[].price_per_m2 | number | 18980.17 |
listings[].rooms | number | 2 |
listings[].title | text | 2 pokoje | Loggia | Parkiet | Śródmieście |
listings[].transaction | text | SELL |
listings[].url | URL | https://www.otodom.pl/pl/oferta/2-pokoje-loggia-parkiet-srodmiescie... |
Sample answer, validated 2026-11-04
{
"listings": [
{
"area_m2": 35.3,
"currency": "PLN",
"estate": "FLAT",
"image": "https://ireland.apollo.olxcdn.com/v1/files/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbiI6InhtczIwaXBma3RwcTItRUNPU1lTVEVNIiwidyI6W3siZm4iOiJlbnZmcXFlMWF5NGsxL...",
"location": "Muranów, Śródmieście, Warszawa, mazowieckie",
"price": 670000,
"price_per_m2": 18980.17,
"rooms": 2,
"title": "2 pokoje | Loggia | Parkiet | Śródmieście",
"transaction": "SELL",
"url": "https://www.otodom.pl/pl/oferta/2-pokoje-loggia-parkiet-srodmiescie-ID4DKEp"
},
{
"area_m2": 62.31,
"currency": "PLN",
"estate": "FLAT",
"image": "https://ireland.apollo.olxcdn.com/v1/files/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbiI6IjRlMGpwNXF5ZmM4OTEtQVBMIiwidyI6W3siZm4iOiJlbnZmcXFlMWF5NGsxLUFQTCIsI...",
"location": "Kawęczyn-Wygoda, Rembertów, Warszawa, mazowieckie",
"price": 1009000,
"price_per_m2": 16193.23,
"rooms": 3,
"title": "3 pokoje z balkonem i klimatyzacją | 62,31 m² | Rembertów",
"transaction": "SELL",
"url": "https://www.otodom.pl/pl/oferta/3-pokoje-z-balkonem-i-klimatyzacja-62-31-m-rembertow-ID4DzzY"
}
]
}
One call
Send the page URL and the recipe name to the Scrape API. The recipe brings the extract rules and the settings that work on Otodom (JavaScript rendering).
curl -G 'https://api.ujeebu.com/scrape' \
-H "ApiKey: $UJEEBU_API_KEY" \
--data-urlencode 'url=https://www.otodom.pl/pl/wyniki/sprzedaz/mieszkanie/cala-polska' \
--data-urlencode 'recipe=otodom'
import os, requests
r = requests.get(
"https://api.ujeebu.com/scrape",
params={"url": "https://www.otodom.pl/pl/wyniki/sprzedaz/mieszkanie/cala-polska", "recipe": "otodom"},
headers={"ApiKey": os.environ["UJEEBU_API_KEY"]},
timeout=120,
)
print(r.json()["result"])
const params = new URLSearchParams({
url: "https://www.otodom.pl/pl/wyniki/sprzedaz/mieszkanie/cala-polska",
recipe: "otodom",
});
const res = await fetch(`https://api.ujeebu.com/scrape?${params}`, {
headers: { ApiKey: process.env.UJEEBU_API_KEY },
});
console.log((await res.json()).result);
The answer is {"result": {...}} with the headers Ujb-Recipe and Ujb-Credits. Your own parameters always win over the recipe.
Search Otodom with parameters
One call, no URL: send recipe=otodom/search with the parameters below. We build the Otodom search URL and answer the listing JSON, at the same credits as the page call.
| Parameter | Type | Values |
|---|---|---|
deal | enum | buy, rent |
estate | enum | flat, house |
city | enum | poland, warszawa, krakow, wroclaw, poznan, gdansk, lodz |
max_price | int | 0 to 100000000 |
page | int | 1 to 20 |
One call (deal=buy)
curl -G 'https://api.ujeebu.com/scrape' \
-H 'ApiKey: YOUR_API_KEY' \
-d 'recipe=otodom/search' \
-d 'deal=buy'
The answer carries the built URL in the Ujb-Url header; a missing or invalid parameter answers 400 naming it (free). Have the URL already? Send it with recipe=otodom/listing. Search with parameters in the docs
What people build with Otodom data
Market prices
Follow asking prices by city and property size to see where the market moves.
Learn moreNew listings alerts
Catch new listings in the areas you watch shortly after they appear.
Inventory tracking
Count active listings per area and type over time.
Price
Same price as the page call, no fee for the recipe. Only successful responses are billed; blocked, timed-out and failed requests are free.
| Page type | Credits a page | Per 1,000, Starter | Per 1,000, Pro |
|---|---|---|---|
| Search results | 5 | $0.82 | $0.50 |
FAQ
What does the Otodom recipe return?
JSON with 11 fields from search results (recipe=otodom), for example title, price, location, area_m2, currency. The answer is {"result": {...}} with the fields shown on this page.
How much does it cost to scrape Otodom?
5 credits a page ($0.50 per 1,000 on Pro, $0.82 on Starter). Same price as the page call, no fee for the recipe. Only successful responses are billed; blocked, timed-out and failed requests are free.
Do I need proxies or a headless browser?
No. The recipe brings the settings that work on Otodom: JavaScript rendering. Send only the URL and recipe=otodom.
What happens when Otodom changes its pages?
We check Otodom every day and re-validate the recipe on real pages every week, then fix it when the site changes. Until a fix is live, the API answers 404 "the recipe has no working version" instead of empty data, and that call is free.
Can I search Otodom with parameters?
Yes, in one call: send recipe=otodom/search with deal, estate, city, max_price, page and no URL. We build the Otodom search URL (returned in the Ujb-Url header), apply recipe=otodom/listing and answer its JSON, at the same credits as the page call. A missing or invalid parameter answers 400 naming it, and that call is free.
Related recipes
ZillowSearch results, Property page · 5 credits
RedfinSearch results, Property page · 5 credits
RightmoveSearch results · 25 credits
SeLogerSearch results · 25 credits
ImmoweltSearch results · 25 credits
Property FinderSearch results · 25 credits
Logos and names belong to their owners. Ujeebu is not affiliated with Otodom.
Get Otodom data as JSON today.
5,000 free credits for 7 days. No card.