Ultimate Car Listings Scraper & Price Changes avatar

Ultimate Car Listings Scraper & Price Changes

Pricing

from $0.10 / 1,000 results

Go to Apify Store
Ultimate Car Listings Scraper & Price Changes

Ultimate Car Listings Scraper & Price Changes

Build dated car-listing observations and detect asking-price changes between comparable snapshots. Source links included; the first run establishes a baseline.

Pricing

from $0.10 / 1,000 results

Rating

0.0

(0)

Developer

Inus Grobler

Inus Grobler

Maintained by Community

Actor stats

3

Bookmarked

55

Total users

1

Monthly active users

19 days ago

Last modified

Features

Limited permissions

Share

Public Car Listings & Observed Price Changes

Collect public listings and track genuine price changes between observations. Select public page URLs, countries or cataloged sources, or supply records you already have. Results describe the collected sample, with explicit coverage and missing values.

Quick start and input

The public example below requests one observed listing. Clear Your records (JSON) to [] before using public collection.

{
"pageUrls": [
"https://www.finn.no/car/used/search.html"
],
"limit": 1,
"maxPublicPages": 3,
"maxObservations": 1,
"view": "observations"
}

Explicit pageUrls and supplied observations take precedence over legacy country/source defaults. Use pageUrls for specific public listing/search pages, or countries with websites/sources to choose cataloged discovery routes. maxPublicPages is a single request allowance across all selected countries, including redirects. maxObservations bounds the collected comparison sample. No external listing database or source API is used. A blocked or unsupported source creates a coverage error, never substitute listings.

Legacy providedRecords or providedDatasetId still clean supplied exports. Their analysis is in EVIDENCE_ANALYSIS, with sourceVerified=false. Use one data source at a time.

Output example

Representative fields from a reviewed public-page sample. Current listings and prices can change.

{
"url": "https://www.finn.no/mobility/item/476900113",
"title": "BMW 225xe",
"price": 119900,
"currency_code": "NOK",
"source": "finnno",
"source_site": "finn.no",
"country_code": "NO",
"observed_at": "2026-10-25T18:10:34.237176+00:00",
"dataInputSource": "web",
"sourceVerified": true,
"collectionEvidence": {
"method": "public_html",
"pageUrl": "https://www.finn.no/car/used/search.html",
"observedFields": [
"title",
"url",
"price"
]
},
"brand": "BMW",
"model": "225xe",
"schema_version": 1,
"record_type": "observation"
}

PUBLIC_COLLECTION_SUMMARY reports observed records, requests, source errors, comparison coverage and confirmed delivered results. BASELINE_OBSERVATIONS contains the actual observations used. Source country metadata describes the cataloged source; incomplete samples are not national market statistics. Asking prices are not transaction prices. Currencies and sale/rental markets are compared separately.

Observations and history

The first collection establishes a baseline. It cannot reconstruct earlier prices. Reuse historyName with the same source selection for later comparisons. Baseline-only price-change/report runs save their observations without a paid result row. A source missing from a partial run does not establish removal. Uncertain dataset writes stop without blind replay or advancing the observation history.

view=observations explicitly returns observed listing rows at the existing result price. view=price_changes returns only actual comparable changes.

Country and source coverage

The source catalog spans 73 countries across both listing categories. For cars, 18 sources in 14 countries currently have bounded HTTP-fixture extraction evidence: AU, CA, DE, GB, IN, LK, NL, NO, PK, RS, SE, SK, US, ZA. This is a sampled page check, not complete pagination or cloud-access proof for every source. Other catalog entries are candidates and can be blocked, API-only or unverified. Run summaries show actual coverage; selecting a country is not a guarantee of results. No fixed South Africa-only restriction is imposed.

Pricing and limits

Check Pricing and set a spending cap. Confirmed delivered records use the existing result event. Supplied export analysis adds no separate analysis event. Baseline-only/failed collection creates no synthetic paid result. Start fees and normal platform/storage costs may still apply. Keep page and result limits small.

Python API example

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('thescrapelab/ultimate-car-listings-scraper-100-sites').call(run_input={
"pageUrls": [
"https://www.finn.no/car/used/search.html"
],
"limit": 1,
"maxPublicPages": 3,
"maxObservations": 1,
"view": "observations"
})
if run is None:
raise RuntimeError('Actor did not return run metadata')
dataset_id = run['defaultDatasetId'] if isinstance(run, dict) else run.default_dataset_id
for record in client.dataset(dataset_id).iterate_items():
print(record)

Support and limitations

Open Issues with a run ID and a sanitized example. Public pages may block requests or change layout. Supplied snapshots remain customer assertions. The Actor does not establish complete historical inventory, national trends, removals from partial coverage, or market-wide price estimates.