Otomoto.pl Scraper with Contacts
Pricing
$4.99 / 1,000 results
Otomoto.pl Scraper with Contacts
Extract Otomoto.pl vehicle listings across Poland with rich specs, seller contacts, pricing, mileage, media, equipment data, and listing signals. Built for enterprise-grade automotive intelligence, lead enrichment, inventory monitoring, and automated analytics pipelines.
Pricing
$4.99 / 1,000 results
Rating
0.0
(0)
Developer
Fatih Tahta
Maintained by CommunityActor stats
3
Bookmarked
23
Total users
3
Monthly active users
5 days ago
Last modified
Categories
Share
Otomoto PL Vehicle Scraper
Slug: fatihtahta/otomoto-pl-scraper
Overview
Otomoto PL Vehicle Scraper collects structured vehicle listing records from Otomoto search pages, category pages, and individual listing URLs, including core listing identity, pricing, vehicle specifications, seller details, optional seller phone numbers, location, media, equipment, and source context. Otomoto is one of Poland's major vehicle marketplaces, making its public listing data useful for market analysis, pricing research, inventory monitoring, and vehicle data enrichment. The actor turns public marketplace pages into repeatable JSON datasets that can be used by analysts, operators, and automated downstream systems. It is designed for recurring data acquisition workflows where consistent output structure, configurable collection scope, and operational repeatability matter. Use it to collect dependable snapshots of publicly available Otomoto data without making manual exports part of your process.
Why Use This Actor
- Market research and analytics teams: build structured extraction workflows for pricing, mileage, make/model mix, regional supply, and market intelligence reporting.
- Product and content teams: enrich catalogs, comparison pages, internal directories, and editorial research with normalized public vehicle attributes.
- Developers and data engineers: feed downstream systems, ETL jobs, search indexes, and warehouse tables with predictable JSON records.
- Lead generation and enrichment teams: identify public seller, listing, and vehicle attributes for qualification, segmentation, and CRM enrichment pipelines.
- Monitoring and competitive tracking teams: schedule repeatable collection for inventory movement, price changes, availability checks, and operational reporting.
Common Use Cases
- Market intelligence: monitor supply, pricing, mileage, vehicle age, fuel type, location, and segment movement across Otomoto listings.
- Lead generation: build targeted prospect lists from public listings and seller profiles for compliant outreach or account research.
- Competitive monitoring: track comparable vehicles, seller inventory, promotion signals, and listing availability over time.
- Catalog and directory building: populate internal vehicle databases with structured public listing records and media references.
- Data enrichment: add current public attributes such as price, mileage, technical specifications, equipment, and location to CRM, BI, or analytics datasets.
- Recurring reporting: schedule periodic runs for dashboards, alerts, warehouse refreshes, and trend analysis.
Quick Start
- Choose one or more Otomoto search result, category, or individual listing URLs that match the vehicles you want to collect.
- Set a small
limitfor the first validation run, such as10or25. - Decide whether to enable
enrich_datawhen you need richer detail such as description, equipment, image gallery, seller location, and technical specifications. - Enable
get_contactwhen available seller phone numbers are needed. - Run the actor in Apify Console.
- Inspect the first dataset records to confirm the output shape, identifiers, and nested fields match your use case.
- Increase the limit, add more URLs, or schedule recurring runs once the dataset is verified.
Input Parameters
This actor accepts Otomoto URLs, optional detail and contact enrichment toggles, and an optional per-URL result limit.
| Parameter | Type | Description | Default |
|---|---|---|---|
startUrls | array of strings | One or more Otomoto URLs to collect from. Use search result pages for broader discovery, category pages for a vehicle segment, or individual listing pages when you already know the exact vehicles to collect. | – |
enrich_data | boolean | Enables richer vehicle listing details, including fields such as description, equipment, image gallery, seller location, and technical specifications when available. Detail-rich runs may take longer. | false |
get_contact | boolean | Collects available dealer phone numbers from listing pages and stores them in seller.phone_number and seller.phone_numbers when available. Contact runs may take longer because listing pages are opened. | false |
limit | integer | Maximum number of listing records to save per URL. Minimum value is 1. Leave empty to collect all available results the actor can reach from the provided inputs. | – |
Choosing Inputs
Use startUrls to define the collection scope. A category or search results URL is best for discovering multiple listings, while an individual listing URL is best when you need a specific vehicle record. Use separate URLs for distinct segments, such as different makes, body types, or search filters created on Otomoto. If limit is set, start small to validate output quality and increase it after confirming the records are useful. Enable enrich_data for detail-heavy workflows, enable get_contact when seller phone numbers are needed, and leave both disabled when standard listing fields are enough for faster sampling.
Example Inputs
Scenario: Category Discovery With Standard Fields
{"startUrls": ["https://www.otomoto.pl/osobowe/bmw"],"enrich_data": false,"get_contact": false,"limit": 25}
Scenario: Detail-Rich Vehicle Collection
{"startUrls": ["https://www.otomoto.pl/osobowe/audi","https://www.otomoto.pl/osobowe/mercedes-benz"],"enrich_data": true,"get_contact": false,"limit": 50}
Scenario: Dealer Contact Collection
{"startUrls": ["https://www.otomoto.pl/osobowe/volkswagen"],"enrich_data": false,"get_contact": true,"limit": 25}
Scenario: Direct Listing Validation
{"startUrls": ["https://www.otomoto.pl/osobowe/oferta/audi-a6-avant-example-IDEXAMPLE.html"],"enrich_data": true,"get_contact": true,"limit": 1}
Output
Output Destination
The actor writes results to an Apify dataset as JSON records. The dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs with minimal post-processing.
The example output contains one vehicle listing record shape. If future runs produce multiple entity types or record shapes, each shape should be documented separately based on the corresponding output examples.
Record Envelope And Stable Identifiers
Each dataset item represents one Otomoto vehicle listing. The strongest recommended idempotency key is listing_id; when syncing across systems, use url as a secondary matching key and source_context.record_fingerprint as an additional run-stable comparison value when present. For deduplication and upserts, match on listing_id first, then update mutable fields such as pricing, status, media, attributes.source_dates, and source_context.scraped_at. Stable identifiers make records easier to merge, deduplicate, and sync across repeated runs.
The source_context.source_url field identifies the input URL that produced the record. The source_context.record_fingerprint field provides an additional fingerprint for comparing records generated during collection.
Examples
Example: vehicle listing
{"listing_id": "EXAMPLE-LISTING-001","url": "https://www.otomoto.pl/osobowe/oferta/audi-a6-avant-example-IDEXAMPLE.html","title": "Audi A6 Avant 45 TDI quattro","status": "ACTIVE","description": "Samochód z polskiego salonu, regularnie serwisowany, gotowy do sprawdzenia podczas jazdy próbnej. Dealer udostępnia pełną historię serwisową i dodatkowe zdjęcia na życzenie.","pricing": {"amount": 26108,"currency": "EUR","evaluation": "NONE"},"vehicle": {"make": "Audi","model": "A6","version": "Avant 45 TDI quattro","year": 2021,"mileage_km": 158900,"fuel_type": "Diesel","gearbox": "Automatyczna","engine_capacity_cc": 1995,"engine_power_hp": 231,"body_type": "SUV","color": "Czarny","door_count": 5,"seat_count": 5,"transmission": "4x4 (dołączany automatycznie)","main_features": ["2021","158 900 km","1 995 cm3","Diesel"]},"location": {"city": "Kraków","region": "Małopolskie","address": "ul. Przykładowa 12","coordinates": {"latitude": 50.06143,"longitude": 19.93658}},"seller": {"id": "EXAMPLE-SELLER-001","uuid": "11111111-2222-4333-8444-555555555555","name": "Example Auto Sp. z o.o.","type": "PROFESSIONAL","phone_number": "500 123 456","phone_numbers": ["500 123 456"],"badges": ["Firma","Sprzedający na OTOMOTO od 2018"]},"media": {"thumbnail_url": "https://example.com/otomoto/images/example-audi-a6-thumb.jpg","image_urls": ["https://example.com/otomoto/images/example-audi-a6-01.jpg","https://example.com/otomoto/images/example-audi-a6-02.jpg","https://example.com/otomoto/images/example-audi-a6-03.jpg","https://example.com/otomoto/images/example-audi-a6-04.jpg","https://example.com/otomoto/images/example-audi-a6-05.jpg","https://example.com/otomoto/images/example-audi-a6-06.jpg","https://example.com/otomoto/images/example-audi-a6-07.jpg","https://example.com/otomoto/images/example-audi-a6-08.jpg","https://example.com/otomoto/images/example-audi-a6-09.jpg","https://example.com/otomoto/images/example-audi-a6-10.jpg","https://example.com/otomoto/images/example-audi-a6-11.jpg","https://example.com/otomoto/images/example-audi-a6-12.jpg","https://example.com/otomoto/images/example-audi-a6-13.jpg","https://example.com/otomoto/images/example-audi-a6-14.jpg","https://example.com/otomoto/images/example-audi-a6-15.jpg","https://example.com/otomoto/images/example-audi-a6-16.jpg","https://example.com/otomoto/images/example-audi-a6-17.jpg","https://example.com/otomoto/images/example-audi-a6-18.jpg","https://example.com/otomoto/images/example-audi-a6-19.jpg","https://example.com/otomoto/images/example-audi-a6-20.jpg","https://example.com/otomoto/images/example-audi-a6-21.jpg","https://example.com/otomoto/images/example-audi-a6-22.jpg"],"image_count": 22},"features": {"equipment": ["Apple CarPlay","Android Auto","Interfejs Bluetooth","Radio","Gniazdo USB","System nawigacji satelitarnej","System nagłośnienia","Ekran dotykowy","Dostęp do internetu","Klimatyzacja automatyczna","Tapicerka skórzana","Elektrycznie ustawiany fotel kierowcy","Elektrycznie ustawiany fotel pasażera","Siedzenie z pamięcią ustawienia","Sportowe fotele - przód","Podłokietniki - przód","Podłokietniki - tył","Kierownica skórzana","Kierownica sportowa","Kolumna kierownicy regulowana elektrycznie","Kierownica wielofunkcyjna","Czujnik deszczu","Tempomat","Lampy przednie w technologii LED","Kontrola odległości z przodu (przy parkowaniu)","Kontrola odległości z tyłu (przy parkowaniu)","Asystent parkowania (Park Assistant)","Kamera parkowania tył","Kontrola zmiany pasa ruchu (Lane assist)","Kontrola odległości od poprzedzającego pojazdu","Kontrola trakcji","Automatyczna kontrola zjazdu ze stoku","Aktywne rozpoznawanie znaków ograniczenia prędkości","Asystent świateł drogowych","Czujnik zmierzchu","Lampy przeciwmgielne","Lampy przeciwmgielne w technologii LED","Lampy tylne w technologii LED","Oświetlenie drogi do domu","System Start/Stop","Elektryczny hamulec postojowy","Felgi aluminiowe 18","Opony runflat","Zawieszenie sportowe","ABS","ESP","System wspomagania hamowania","System ostrzegający o możliwej kolizji","System wykrywania zmęczenie kierowcy","System powiadamiania o wypadku","Poduszka powietrzna kierowcy","Poduszka powietrzna pasażera","Poduszka kolan pasażera","Kurtyny powietrzne - przód","Boczne poduszki powietrzne - przód","Kurtyny powietrzne - tył","Boczne poduszki powietrzne - tył","Isofix (punkty mocowania fotelika dziecięcego)"],"equipment_groups": [{"key": "audio_and_computing","label": "Audio i multimedia","values": [{"key": "apple_carplay","label": "Apple CarPlay"},{"key": "android_auto","label": "Android Auto"},{"key": "bluetooth_interface","label": "Interfejs Bluetooth"},{"key": "radio","label": "Radio"},{"key": "usb_in","label": "Gniazdo USB"},{"key": "navigation_system","label": "System nawigacji satelitarnej"},{"key": "soundsystem","label": "System nagłośnienia"},{"key": "touchscreen_monitor","label": "Ekran dotykowy"},{"key": "internet_access","label": "Dostęp do internetu"}]},{"key": "comfort_and_addons","label": "Komfort i dodatki","values": [{"key": "air_conditioning_type","label": "Klimatyzacja automatyczna"},{"key": "upholstery_type","label": "Tapicerka skórzana"},{"key": "driver_seat_electrically_adjustable","label": "Elektrycznie ustawiany fotel kierowcy"},{"key": "passenger_seat_electrically_adjustable","label": "Elektrycznie ustawiany fotel pasażera"},{"key": "memory_seat","label": "Siedzenie z pamięcią ustawienia"},{"key": "sport_seats_front","label": "Sportowe fotele - przód"},{"key": "armrest_front","label": "Podłokietniki - przód"},{"key": "armrest_rear","label": "Podłokietniki - tył"},{"key": "leather_steering_wheel","label": "Kierownica skórzana"},{"key": "sports_steering_wheel","label": "Kierownica sportowa"},{"key": "steering_wheel_electrically_adjustable","label": "Kolumna kierownicy regulowana elektrycznie"},{"key": "multi_functional_steering_wheel","label": "Kierownica wielofunkcyjna"},{"key": "rain_sensor","label": "Czujnik deszczu"}]},{"key": "electronics_and_driver_assistance","label": "Systemy wspomagania kierowcy","values": [{"key": "cruisecontrol_type","label": "Tempomat"},{"key": "headlight_lamp_type","label": "Lampy przednie w technologii LED"},{"key": "park_distance_control_front","label": "Kontrola odległości z przodu (przy parkowaniu)"},{"key": "park_distance_control_rear","label": "Kontrola odległości z tyłu (przy parkowaniu)"},{"key": "park_assistant","label": "Asystent parkowania (Park Assistant)"},{"key": "rear_view_camera","label": "Kamera parkowania tył"},{"key": "lane_control_assistant","label": "Kontrola zmiany pasa ruchu (Lane assist)"},{"key": "distance_control","label": "Kontrola odległości od poprzedzającego pojazdu"},{"key": "traction_control","label": "Kontrola trakcji"},{"key": "hill_descent_control","label": "Automatyczna kontrola zjazdu ze stoku"},{"key": "active_speed_sign_recognition","label": "Aktywne rozpoznawanie znaków ograniczenia prędkości"},{"key": "automated_high_beam_assist","label": "Asystent świateł drogowych"},{"key": "automatic_dimlight_activation","label": "Czujnik zmierzchu"},{"key": "fog_lamps","label": "Lampy przeciwmgielne"},{"key": "led_fog_lamps","label": "Lampy przeciwmgielne w technologii LED"},{"key": "led_rear_lights","label": "Lampy tylne w technologii LED"},{"key": "follow_me_home","label": "Oświetlenie drogi do domu"},{"key": "startstop_system","label": "System Start/Stop"},{"key": "electric_parking_brake","label": "Elektryczny hamulec postojowy"}]},{"key": "performance_and_tuning","label": "Osiągi i tuning","values": [{"key": "alloy_wheels_type","label": "Felgi aluminiowe 18"},{"key": "runflat_tyres","label": "Opony runflat"},{"key": "sport_suspension","label": "Zawieszenie sportowe"}]},{"key": "security","label": "Bezpieczeństwo","values": [{"key": "antilock_brake_system","label": "ABS"},{"key": "esp","label": "ESP"},{"key": "power_assisted_brakes","label": "System wspomagania hamowania"},{"key": "collision_warning_system","label": "System ostrzegający o możliwej kolizji"},{"key": "driver_conditioning_monitoring","label": "System wykrywania zmęczenie kierowcy"},{"key": "automatic_emergency_call","label": "System powiadamiania o wypadku"},{"key": "driver_airbag","label": "Poduszka powietrzna kierowcy"},{"key": "passenger_airbag","label": "Poduszka powietrzna pasażera"},{"key": "knee_airbag_passenger","label": "Poduszka kolan pasażera"},{"key": "head_airbags_front","label": "Kurtyny powietrzne - przód"},{"key": "side_airbag_driver_and_passenger","label": "Boczne poduszki powietrzne - przód"},{"key": "head_airbags_rear","label": "Kurtyny powietrzne - tył"},{"key": "side_airbags_rear","label": "Boczne poduszki powietrzne - tył"},{"key": "child_seat_fixation","label": "Isofix (punkty mocowania fotelika dziecięcego)"}]}]},"signals": {"highlighted": false,"promoted": true,"cepik_verified": false,"enriched": true},"attributes": {"parameters": {"has_vin": {"label": "has_vin","display_value": "Tak","value": "1"},"is_imported_car": {"label": "is_imported_car","display_value": "Nie","value": "0"},"catalog_urn": {"label": "catalog_urn","display_value": "orn:otomotopl:catalog:example-100001","value": "orn:otomotopl:catalog:example-100001"},"make": {"label": "make","display_value": "Audi","value": "audi"},"model": {"label": "model","display_value": "A6","value": "a6"},"version": {"label": "version","display_value": "Avant 45 TDI quattro","value": "ver-avant-45-tdi-quattro"},"generation": {"label": "generation","display_value": "C8 (2018-)","value": "gen-c8-2018"},"apple_carplay": {"label": "apple_carplay","display_value": "Tak","value": "1"},"year": {"label": "year","display_value": "2021","value": "2021"},"mileage": {"label": "mileage","display_value": "158 900 km","value": "158900"},"engine_capacity": {"label": "engine_capacity","display_value": "1 995 cm3","value": "1995"},"vin": {"label": "vin","display_value": "EXAMPLE-ENCRYPTED-VIN","value": "EXAMPLE-ENCRYPTED-VIN"},"fuel_type": {"label": "fuel_type","display_value": "Diesel","value": "diesel"},"engine_power": {"label": "engine_power","display_value": "231 KM","value": "231"},"gearbox": {"label": "gearbox","display_value": "Automatyczna","value": "automatic"},"android_auto": {"label": "android_auto","display_value": "Tak","value": "1"},"transmission": {"label": "transmission","display_value": "4x4 (dołączany automatycznie)","value": "all-wheel-auto"},"bluetooth_interface": {"label": "bluetooth_interface","display_value": "Tak","value": "1"},"damaged": {"label": "damaged","display_value": "Nie","value": "0"},"body_type": {"label": "body_type","display_value": "SUV","value": "suv"},"door_count": {"label": "door_count","display_value": "5","value": "5"},"nr_seats": {"label": "nr_seats","display_value": "5","value": "5"},"color": {"label": "color","display_value": "Czarny","value": "black"},"radio": {"label": "radio","display_value": "Tak","value": "1"},"rhd": {"label": "rhd","display_value": "Po lewej","value": "0"},"usb_in": {"label": "usb_in","display_value": "Tak","value": "1"},"navigation_system": {"label": "navigation_system","display_value": "Tak","value": "1"},"soundsystem": {"label": "soundsystem","display_value": "Tak","value": "1"},"touchscreen_monitor": {"label": "touchscreen_monitor","display_value": "Tak","value": "1"},"internet_access": {"label": "internet_access","display_value": "Tak","value": "1"},"air_conditioning_type": {"label": "air_conditioning_type","display_value": "Klimatyzacja automatyczna","value": "automatic-climate-control"},"upholstery_type": {"label": "upholstery_type","display_value": "Tapicerka skórzana","value": "leather-upholstery"},"driver_seat_electrically_adjustable": {"label": "driver_seat_electrically_adjustable","display_value": "Tak","value": "1"},"passenger_seat_electrically_adjustable": {"label": "passenger_seat_electrically_adjustable","display_value": "Tak","value": "1"},"memory_seat": {"label": "memory_seat","display_value": "Tak","value": "1"},"sport_seats_front": {"label": "sport_seats_front","display_value": "Tak","value": "1"},"armrest_front": {"label": "armrest_front","display_value": "Tak","value": "1"},"armrest_rear": {"label": "armrest_rear","display_value": "Tak","value": "1"},"leather_steering_wheel": {"label": "leather_steering_wheel","display_value": "Tak","value": "1"},"sports_steering_wheel": {"label": "sports_steering_wheel","display_value": "Tak","value": "1"},"steering_wheel_electrically_adjustable": {"label": "steering_wheel_electrically_adjustable","display_value": "Tak","value": "1"},"multi_functional_steering_wheel": {"label": "multi_functional_steering_wheel","display_value": "Tak","value": "1"},"rain_sensor": {"label": "rain_sensor","display_value": "Tak","value": "1"},"cruisecontrol_type": {"label": "cruisecontrol_type","display_value": "Tempomat","value": "cruise-control"},"headlight_lamp_type": {"label": "headlight_lamp_type","display_value": "Lampy przednie w technologii LED","value": "led-front-dim-light"},"park_distance_control_front": {"label": "park_distance_control_front","display_value": "Tak","value": "1"},"park_distance_control_rear": {"label": "park_distance_control_rear","display_value": "Tak","value": "1"},"park_assistant": {"label": "park_assistant","display_value": "Tak","value": "1"},"rear_view_camera": {"label": "rear_view_camera","display_value": "Tak","value": "1"},"lane_control_assistant": {"label": "lane_control_assistant","display_value": "Tak","value": "1"},"distance_control": {"label": "distance_control","display_value": "Tak","value": "1"},"traction_control": {"label": "traction_control","display_value": "Tak","value": "1"},"hill_descent_control": {"label": "hill_descent_control","display_value": "Tak","value": "1"},"active_speed_sign_recognition": {"label": "active_speed_sign_recognition","display_value": "Tak","value": "1"},"automated_high_beam_assist": {"label": "automated_high_beam_assist","display_value": "Tak","value": "1"},"automatic_dimlight_activation": {"label": "automatic_dimlight_activation","display_value": "Tak","value": "1"},"fog_lamps": {"label": "fog_lamps","display_value": "Tak","value": "1"},"led_fog_lamps": {"label": "led_fog_lamps","display_value": "Tak","value": "1"},"led_rear_lights": {"label": "led_rear_lights","display_value": "Tak","value": "1"},"follow_me_home": {"label": "follow_me_home","display_value": "Tak","value": "1"},"startstop_system": {"label": "startstop_system","display_value": "Tak","value": "1"},"electric_parking_brake": {"label": "electric_parking_brake","display_value": "Tak","value": "1"},"alloy_wheels_type": {"label": "alloy_wheels_type","display_value": "Felgi aluminiowe 18","value": "light-alloy-wheels-18"},"runflat_tyres": {"label": "runflat_tyres","display_value": "Tak","value": "1"},"sport_suspension": {"label": "sport_suspension","display_value": "Tak","value": "1"},"antilock_brake_system": {"label": "antilock_brake_system","display_value": "Tak","value": "1"},"esp": {"label": "esp","display_value": "Tak","value": "1"},"power_assisted_brakes": {"label": "power_assisted_brakes","display_value": "Tak","value": "1"},"collision_warning_system": {"label": "collision_warning_system","display_value": "Tak","value": "1"},"driver_conditioning_monitoring": {"label": "driver_conditioning_monitoring","display_value": "Tak","value": "1"},"automatic_emergency_call": {"label": "automatic_emergency_call","display_value": "Tak","value": "1"},"driver_airbag": {"label": "driver_airbag","display_value": "Tak","value": "1"},"passenger_airbag": {"label": "passenger_airbag","display_value": "Tak","value": "1"},"knee_airbag_passenger": {"label": "knee_airbag_passenger","display_value": "Tak","value": "1"},"head_airbags_front": {"label": "head_airbags_front","display_value": "Tak","value": "1"},"side_airbag_driver_and_passenger": {"label": "side_airbag_driver_and_passenger","display_value": "Tak","value": "1"},"head_airbags_rear": {"label": "head_airbags_rear","display_value": "Tak","value": "1"},"side_airbags_rear": {"label": "side_airbags_rear","display_value": "Tak","value": "1"},"child_seat_fixation": {"label": "child_seat_fixation","display_value": "Tak","value": "1"},"version_label": {"label": "version_label","display_value": "Avant 45 TDI quattro","value": "Avant 45 TDI quattro"},"autorenew": {"label": "autorenew","display_value": "Nie","value": "0"},"deactivation_reason_id": {"label": "deactivation_reason_id","display_value": "12","value": "12"},"new_used": {"label": "new_used","display_value": "Używany","value": "used"}},"details": {"make": {"label": "Marka pojazdu","display_value": "Audi","value": "Audi","group": "basic_information"},"model": {"label": "Model pojazdu","display_value": "A6","value": "A6","group": "basic_information"},"version": {"label": "Wersja","display_value": "Avant 45 TDI quattro","value": "Avant 45 TDI quattro","group": "basic_information"},"color": {"label": "Kolor","display_value": "Czarny","value": "Czarny","group": "basic_information"},"door_count": {"label": "Liczba drzwi","display_value": "5","value": "5","group": "basic_information"},"nr_seats": {"label": "Liczba miejsc","display_value": "5","value": "5","group": "basic_information"},"year": {"label": "Rok produkcji","display_value": "2021","value": "2021","group": "basic_information"},"generation": {"label": "Generacja","display_value": "C8 (2018-)","value": "C8 (2018-)","group": "basic_information"},"vin": {"label": "VIN","display_value": "EXAMPLE-ENCRYPTED-VIN","value": "EXAMPLE-ENCRYPTED-VIN","group": "basic_information"},"fuel_type": {"label": "Rodzaj paliwa","display_value": "Diesel","value": "Diesel","group": "technical_specs"},"engine_capacity": {"label": "Pojemność skokowa","display_value": "1 995 cm3","value": "1 995 cm3","group": "technical_specs"},"engine_power": {"label": "Moc","display_value": "231 KM","value": "231 KM","group": "technical_specs"},"body_type": {"label": "Typ nadwozia","display_value": "SUV","value": "SUV","group": "technical_specs"},"gearbox": {"label": "Skrzynia biegów","display_value": "Automatyczna","value": "Automatyczna","group": "technical_specs"},"transmission": {"label": "Napęd","display_value": "4x4 (dołączany automatycznie)","value": "4x4 (dołączany automatycznie)","group": "technical_specs"},"mileage": {"label": "Przebieg","display_value": "158 900 km","value": "158 900 km","group": "condition_history"},"new_used": {"label": "Stan","display_value": "Używany","value": "Używany","group": "condition_history"}},"category": {"code": "osobowe","name": "Osobowe"},"source_dates": {"created_at": "2026-05-29T10:30:00Z","updated_at": "2026-05-29T12:15:00Z","original_created_at": "2026-05-28T09:00:00Z","bump_date": "2026-05-29T13:45:00Z"}},"source_context": {"source_url": "https://www.otomoto.pl/osobowe/audi","seed_id": "example-seed-001","seed_type": "url","page_index": 1,"record_fingerprint": "example-fingerprint-001","scraped_at": "2026-05-29T14:00:00.000000Z"}}
Field Reference
Vehicle Listing Record
listing_id (string, required): Stable Otomoto listing identifier.
url (string, required): Public listing URL.
title (string, optional): Listing title.
status (string, optional): Listing availability status, such as ACTIVE.
description (string, optional): Public listing description when collected.
pricing.amount / pricing.currency (number/string, optional): Listing price and ISO-style currency code, such as EUR or PLN.
pricing.evaluation (string, optional): Price evaluation label when available.
vehicle.make / vehicle.model / vehicle.version (string, optional): Vehicle make, model, and version.
vehicle.year (integer, optional): Production year.
vehicle.mileage_km (integer, optional): Mileage in kilometers.
vehicle.fuel_type (string, optional): Fuel type.
vehicle.gearbox (string, optional): Gearbox label.
vehicle.engine_capacity_cc (integer, optional): Engine capacity in cubic centimeters.
vehicle.engine_power_hp (integer, optional): Engine power in horsepower.
vehicle.body_type (string, optional): Body type.
vehicle.color (string, optional): Vehicle color.
vehicle.door_count / vehicle.seat_count (integer, optional): Door and seat counts.
vehicle.transmission (string, optional): Drive or transmission description.
vehicle.main_features (array of strings, optional): Display-friendly feature highlights from the listing.
location.city / location.region / location.address (string, optional): Public listing location fields.
location.coordinates.latitude / location.coordinates.longitude (number, optional): Geographic coordinates when available.
seller.id (string, optional): Seller identifier.
seller.uuid (string, optional): Seller UUID when available.
seller.name (string, optional): Public seller name.
seller.type (string, optional): Seller type, such as PROFESSIONAL.
seller.phone_number (string, optional): First available seller phone number when get_contact is enabled and a number is available.
seller.phone_numbers (array of strings, optional): Available seller phone numbers collected from the listing when get_contact is enabled.
seller.badges (array of strings, optional): Public seller badges.
media.thumbnail_url (string, optional): Primary thumbnail image URL.
media.image_urls (array of strings, optional): Image URLs associated with the listing.
media.image_count (integer, optional): Number of image URLs included.
features.equipment (array of strings, optional): Equipment and feature labels.
features.equipment_groups (array of objects, optional): Equipment grouped by category.
features.equipment_groups[].key (string, optional): Equipment group key.
features.equipment_groups[].label (string, optional): Equipment group display label.
features.equipment_groups[].values[].key (string, optional): Equipment item key.
features.equipment_groups[].values[].label (string, optional): Equipment item label.
signals.highlighted / signals.promoted / signals.cepik_verified / signals.enriched (boolean, optional): Listing-level flags for public listing state and whether detail enrichment was applied.
attributes.parameters (object, optional): Raw-style listing parameters keyed by parameter name.
attributes.parameters.*.label (string, optional): Parameter label.
attributes.parameters.*.display_value (string, optional): Human-readable parameter value.
attributes.parameters.*.value (string, optional): Normalized parameter value when available.
attributes.details (object, optional): Detail fields keyed by detail name.
attributes.details.*.label (string, optional): Detail label.
attributes.details.*.display_value (string, optional): Human-readable detail value.
attributes.details.*.value (string, optional): Detail value.
attributes.details.*.group (string, optional): Detail group, such as basic_information, technical_specs, or condition_history.
attributes.category.code / attributes.category.name (string, optional): Listing category code and display name.
attributes.source_dates.created_at (string, optional): Source creation timestamp when available.
attributes.source_dates.updated_at (string, optional): Source update timestamp when available.
attributes.source_dates.original_created_at (string, optional): Original source creation timestamp when available.
attributes.source_dates.bump_date (string, optional): Source bump timestamp when available.
source_context.source_url (string, required): Input URL that produced the record.
source_context.seed_id (string, optional): Stable identifier for the provided input URL.
source_context.seed_type (string, optional): Input source type, such as url.
source_context.page_index (integer, optional): Result page index associated with the record.
source_context.record_fingerprint (string, optional): Record fingerprint useful for comparison and deduplication support.
source_context.scraped_at (string, required): Timestamp when the record was collected.
Data Quality, Guarantees, And Handling
- Structured records: results are normalized into predictable JSON objects for downstream use.
- Best-effort extraction: fields may vary by region, session, availability, listing type, or UI experiments.
- Optional fields: null-check optional values in downstream code, especially nested fields such as seller metadata, coordinates, media, equipment, and detailed attributes.
- Deduplication: use
listing_idas the primary stable key, withurlandsource_context.record_fingerprintas supporting keys when needed. - Freshness: results reflect the publicly available data at run time.
- Repeated runs: use the recommended idempotency key when syncing data into warehouses, CRMs, search indexes, or monitoring systems.
Tips For Best Results
- Start with a small
limitto validate the output shape before scaling up. - Use one vehicle segment, category URL, or filtered Otomoto URL per run when you need cleaner segmentation.
- Use multiple
startUrlswhen you want to collect comparable segments in one run. - Enable
enrich_datawhen equipment, detailed specifications, descriptions, or image galleries are important. - Enable
get_contactwhen seller phone numbers are important for your workflow. - Leave
enrich_datadisabled for faster sampling when standard listing fields are sufficient. - Schedule recurring runs for monitoring workflows instead of relying on manual one-off exports.
- Use
listing_idfor deduplication when storing results over time.
How to Run on Apify
- Open the actor in Apify Console.
- Configure the available input fields for the target scope by adding one or more Otomoto URLs.
- Set the maximum number of outputs to collect with
limit. - Choose whether to enable
enrich_data. - Click Start and wait for the run to finish.
- Download results in JSON, CSV, Excel, or other supported formats.
Scheduling & Automation
Scheduling
Automated Data Collection
You can schedule runs to keep Otomoto vehicle datasets current for monitoring, reporting, or enrichment workflows. Scheduled runs are useful when you need consistent snapshots of public listings over time.
- Navigate to Schedules in Apify Console
- Create a new schedule, such as daily, weekly, or custom cron
- Configure input parameters
- Enable notifications for run completion
- Add webhooks for automated processing
Integration Options
- BI dashboards: monitor pricing, availability, category movement, seller mix, and geographic coverage over time.
- Data warehouses: store historical listing snapshots for analysis, reporting, and model-ready datasets.
- CRM enrichment: sync public seller and vehicle attributes into lead, account, or opportunity records.
- Google Sheets or Airtable: review smaller samples, validate segments, or coordinate lightweight operational workflows.
- Webhooks: trigger ingestion, alerting, validation, or notification workflows after each completed run.
- Data enrichment pipelines: append current public vehicle attributes to existing inventory, valuation, or analytics datasets.
Export Formats And Downstream Use
Apify datasets can be exported or consumed by downstream systems for operational workflows, analysis, and data delivery.
- JSON: for APIs, applications, and data pipelines
- CSV or Excel: for spreadsheet workflows and manual review
- API access: for automated ingestion into internal systems
- BI and warehouses: for reporting, dashboards, and historical analysis
Performance
Estimated run times:
- Small runs (< 1,000 outputs): ~3-5 minutes
- Medium runs (1,000-5,000 outputs): ~5-15 minutes
- Large runs (5,000+ outputs): ~15-30 minutes
Execution time varies based on filters, result volume, and how much information is returned per record. Highly filtered runs can finish faster, while broad discovery or detail-rich records may take longer.
Limitations
- Availability depends on what https://www.otomoto.pl publicly exposes at run time.
- Some optional fields may be missing on sparse records, older listings, or listings with limited public detail.
- Very broad searches may take longer or require higher
limitvalues. - Target-side changes can affect field availability, naming, or formatting.
- Regional, account, or availability differences may change visible results.
- Detail-rich collection can take longer than standard listing collection.
Troubleshooting
- No results returned: check the direct URLs, confirm they are valid Otomoto pages, and verify that the target pages contain matching public records.
- Fewer results than expected: raise the
limit, use broader Otomoto search or category URLs, or verify that the target contains enough matching listings. - Some fields are empty: optional fields depend on what each record publicly provides.
- Run takes longer than expected: reduce scope, lower
limitfor validation, or split broad collection into smaller segments. - Output changed: compare the current output with the field reference and report a small sample if support is needed.
FAQ
What data does this actor collect?
It collects public Otomoto vehicle listing data, including listing identity, URL, title, status, pricing, vehicle specifications, location, seller information, media, equipment, attributes, and source context when available.
Can I filter by location, category, date, price, or other criteria?
The actor accepts Otomoto URLs. To use filters such as location, category, price, or sorting, configure those filters on Otomoto and provide the resulting search or category URL in startUrls.
Why did I receive fewer results than my limit?
The limit is a maximum, not a guarantee. A run may return fewer records when the provided URL has fewer matching public listings, listings are unavailable, or the selected scope is narrow.
Can I schedule recurring runs?
Yes. Use Apify schedules to run the actor daily, weekly, or with a custom cron schedule for recurring monitoring and reporting workflows.
How do I avoid duplicates across runs?
Use listing_id as the primary idempotency key. You can also compare url and source_context.record_fingerprint when building deduplication or upsert logic.
Can I export the data to CSV, Excel, or JSON?
Yes. Apify datasets support exports in JSON, CSV, Excel, and other formats available in Apify Console.
Does this actor collect private data?
No. The actor is intended to collect publicly available information from Otomoto listing pages. Users are responsible for using the resulting data lawfully and responsibly.
When should I enable enrich_data?
Enable enrich_data when you need richer detail fields such as description, equipment, media, seller location, and technical specifications. Leave it disabled for faster sampling when standard listing fields are enough.
When should I enable get_contact?
Enable get_contact when you need available seller phone numbers. It opens listing pages to collect contact details, so runs can take longer than standard listing collection.
What should I include when reporting an issue?
Include the input used, the run ID, expected versus actual behavior, and a small output sample if it helps illustrate the issue. Redact any sensitive information before sharing.
Compliance & Ethics
Responsible Data Collection
This actor collects publicly available vehicle listing information from https://www.otomoto.pl for legitimate business purposes, including:
- Automotive research and market analysis
- Vehicle pricing, inventory, and availability monitoring
- Data enrichment for analytics, reporting, and operational workflows
Users are responsible for ensuring their use of collected data complies with applicable laws, regulations, and platform terms. This section is informational and not legal advice.
Best Practices
- Use collected data in accordance with applicable laws, regulations, and the target site's terms
- Respect individual privacy and personal information
- Use data responsibly and avoid disruptive or excessive collection
- Do not use this actor for spamming, harassment, or other harmful purposes
- Follow relevant data protection requirements where applicable, such as GDPR or CCPA
Support
For help, use the Issues tab or the actor page on Apify. Include the input used, with sensitive values redacted if needed, the run ID, the expected versus actual behavior, and a small output sample when it helps clarify the problem.