DEV Community

Devil Scrapes
Devil Scrapes

Posted on

How to Scrape Autoplius.lt Car Listings (Lithuania) to JSON/CSV

Quick answer: Autoplius.lt has no public API. Use the Autoplius Lithuania Car Scraper on Apify to extract make, model, year, price in EUR, mileage, fuel type, gearbox, engine power, body type, colour, location, seller details, and photos from any Autoplius search — no login required. Output lands in a clean JSON or CSV dataset ready to query.

Lithuania's used-car market runs through Autoplius.lt. It's the dominant platform where dealers and private sellers in Vilnius, Kaunas, Klaipėda, and across the Baltics list their stock. The site carries tens of thousands of active ads and refreshes continuously. If you need structured pricing data for the Lithuanian market — for price research, fleet sourcing, cross-border arbitrage, or dealer analytics — Autoplius is the source, and there is no official API for it.

Does Autoplius.lt have an API? 🔎

No. Autoplius.lt does not offer a public developer API. Listing data is served exclusively through the website, which defends against automated access through TLS fingerprinting and behavioural monitoring. A standard Python HTTP client gets blocked long before it reaches meaningful listing data.

We handle the resistance. The Actor uses curl-cffi to replay real Chrome, Firefox, and Safari TLS ClientHello handshakes — the site sees a browser, not Python. Every request routes through Apify's residential proxy pool, with a fresh exit IP and session ID on each block event. Retries use exponential backoff (2 s → 4 s → 8 s → 16 s → 30 s cap) and honour Retry-After headers when Autoplius provides them. You get a dataset; we absorb the friction.

What data does the scraper return? 📤

One output row per listing, validated by the ResultRow Pydantic model before it touches your dataset:

{
  "listing_id": "31015262",
  "listing_url": "https://autoplius.lt/skelbimai/volvo-xc90-2-0-l-visureigis-krosoveris-2016-dyzelinas-31015262.html",
  "title": "Volvo XC90",
  "make": "Volvo",
  "model": "XC90",
  "year": 2016,
  "price": 22500,
  "currency": "EUR",
  "mileage_km": 150000,
  "fuel_type": "Dyzelinas",
  "transmission": "Automatinė",
  "engine_power_hp": 224,
  "engine_size_cc": 1969,
  "body_type": "Visureigis / Krosoveris",
  "color": "Balta",
  "first_registration": "2016-07",
  "location": "Klaipėda",
  "region": "Lietuva",
  "seller_type": "private",
  "seller_name": "Privatus pardavėjas",
  "photo_urls": [
    "https://autoplius-img.dgn.lt/ann_25_394952552/volvo-xc90.jpg"
  ],
  "posted_date": "Prieš 9 val.",
  "scraped_at": "2026-06-02T10:00:00+00:00"
}
Enter fullscreen mode Exit fullscreen mode

The complete field set: listing_id, listing_url, title, make, model, year, price, currency, mileage_km, fuel_type, transmission, engine_power_hp, engine_size_cc, body_type, color, first_registration, location, region, seller_type, seller_name, photo_urls, description, posted_date, scraped_at.

Prices are always integers in EUR. Mileage is always in kilometres. Lithuanian category values — Dyzelinas (diesel), Automatinė (automatic), Visureigis / Krosoveris (SUV/crossover) — are preserved as-is in the output; the column names themselves use standard English so your downstream code stays readable.

enrichDetails: true sends a follow-up request to each listing's detail page for colour, engine displacement, first-registration date, seller type, seller name, and description. Set it to false to halve request volume when listing-card fields are sufficient.

How to run it with Python 🐍

Install the Apify client:

pip install apify-client
Enter fullscreen mode Exit fullscreen mode

Apply your filters on autoplius.lt — make, price range, year, fuel type, city — then paste the resulting search URL:

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("DevilScrapes/autoplius-lithuania-cars").call(
    run_input={
        "searchUrl": "https://autoplius.lt/skelbimai/naudoti-automobiliai?make_id[]=52",
        "maxResults": 100,
        "enrichDetails": True,
        "proxyConfiguration": {
            "useApifyProxy": True,
            "apifyProxyGroups": ["RESIDENTIAL"]
        }
    }
)

items = list(
    client.dataset(run["defaultDatasetId"]).iterate_items()
)

print(f"Scraped {len(items)} listings")
for item in items[:3]:
    print(item["make"], item["model"], item["year"],
          item["price"], "EUR", item.get("mileage_km"), "km")
Enter fullscreen mode Exit fullscreen mode

Leave searchUrl empty to scrape the default used-cars feed across all makes and regions.

What can you build with Lithuanian used-car data? 💡

Baltic price benchmarking. Lithuania, Estonia, and Latvia share a common Euro-denominated market and similar consumer preferences. Compare Autoplius.lt asking prices against Auto24.ee (Estonia) and Ss.lv (Latvia) to identify models where Lithuanian prices diverge — a signal for import or export opportunity.

Dealer stock monitoring. Use seller_type == "dealer" combined with seller_name to track a specific dealership's inventory. Run the Actor daily, diff listing_id sets between runs, and you have a near-real-time stock feed without screen-scraping manually.

Depreciation research. Pull historical price series for a model by running the Actor weekly. Pair price, mileage_km, year, and first_registration to fit depreciation curves — useful for insurance pricing, fleet residual-value forecasting, or personal finance tools.

EV and hybrid market tracking. Filter by fuel_type for Elektra (electric) or hybrid variants. Lithuania's secondhand EV market is smaller than Estonia's but growing fast; Autoplius is the best structured source for tracking that growth.

Lead generation for private sellers. Filter seller_type == "private" and sort by posted_date to surface fresh listings. A private seller who posted "Prieš 9 val." (9 hours ago) is still in the discovery phase — useful for services targeting private sellers.

How much does it cost? 💰

Pay-Per-Event pricing — you pay only when events fire:

Event Price
actor-start (once per run) $0.05
result-row (per listing) $0.002

1,000 listings costs $2.05 ($0.05 start + 1,000 × $0.002). No results means no result-row charges. New Apify accounts receive $5 of free credit — no card required.

FAQ ❓

Is scraping Autoplius.lt legal?

The Actor accesses only data visible to any anonymous visitor. Web scraping legality varies by jurisdiction; consult legal counsel before using the data commercially. The Actor does not bypass authentication or access non-public content. See the Terms of Service notice on the Store listing.

The values are in Lithuanian — is that a problem?

Column names are standard English (make, model, fuel_type, transmission). The category values themselves — like Dyzelinas or Visureigis — are Lithuanian strings as Autoplius stores them. The vocabulary is small and consistent; a simple mapping dict handles translation in post-processing.

How recent is the data?

Autoplius.lt refreshes listings continuously. The posted_date field carries the relative label from the listing card (e.g. Prieš 9 val. = 9 hours ago). Run the Actor as frequently as your use case demands — daily for price tracking, hourly for real-time lead generation.

Does detail enrichment affect pricing?

Yes. With enrichDetails: true, the Actor sends one additional request per listing. This roughly doubles run time and request count, but adds color, engine_size_cc, first_registration, seller_type, seller_name, and description. If you only need the listing-card fields, set enrichDetails: false.

Get started

The Autoplius Lithuania Car Scraper is available on the Apify Store now. Free to try — Apify's $5 starter credit covers a few hundred enriched listings with no credit card required.

Store link: https://apify.com/DevilScrapes/autoplius-lithuania-cars


Built by Devil Scrapes — a fleet of opinionated public-data Actors. Honest pricing, real engineering, zero fine print.

Further reading:

Top comments (0)