Autogidas.lt Car Ads Extractor
Under maintenancePricing
Pay per usage
Autogidas.lt Car Ads Extractor
Under maintenanceExtracts publicly available used-car listings from Autogidas.lt. Paste a search URL from the site and every matching public ad comes back as structured data — price, year, mileage, photos and the full parameter table. Only data any visitor can see on the site is returned.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
steeriq
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
13 days ago
Last modified
Categories
Share
What does Autogidas.lt Car Ads Extractor do?
This actor turns the used-car listings on Autogidas.lt — one of Lithuania's largest car marketplaces — into structured data: price, year, mileage, engine, gearbox, seller and the full parameter table for every ad a search matches. Paste a search URL from the site, run the actor, and get a dataset back — no code required, though the same input works identically through the API for a scheduled or programmatic pipeline.
Everything it collects is what any visitor sees on Autogidas' own public pages. It signs in to
nothing and reaches nothing behind a login, a paywall or a private seller area. That includes
sellerName, which is simply the dealer or seller name the ad itself displays.
Built on Crawlee and the Apify SDK, it gets Apify's proxy rotation, scheduling, dataset export and monitoring for free — you don't manage a server or a proxy pool.
Why use this actor?
- Market research and pricing. Pull every ad for a make/model/year band to see what cars are actually asking and selling for right now, not last quarter.
- Lead generation for dealers. Watch a segment (e.g. diesel wagons under €15k) for new listings without refreshing the site by hand.
- Fleet or inventory monitoring. Track your own listings' visibility, or a competitor's, over time.
- Data feeds. Cars, prices and specs as clean JSON/CSV for a downstream app, spreadsheet, or BI tool.
How to use Autogidas.lt Car Ads Extractor
- Open autogidas.lt and build the search you want using the site's own filters — make, model, price, year, equipment, seller type, damage status, colour, anything the site offers.
- Copy the resulting URL and paste it into Start URLs on the Input tab.
- Click Start. Leave the other fields on their defaults for a first run.
- When the run finishes, open the Output tab, or download the dataset as JSON, CSV, Excel or HTML from the Export button.
Several Start URLs are fine — their results are merged and de-duplicated, so two overlapping searches never produce the same ad twice.
{"startUrls": [{ "url": "https://autogidas.lt/en/skelbimai/automobiliai/bmw/" }],"scrapeDetails": true,"maxItems": 1000,}
Lithuanian, Russian and Latvian URLs all work — they're rewritten onto the English edition before they're fetched, so field labels and values always come back in English.
Single ad URLs work too
Start URLs don't have to be searches. Paste a link straight to one ad — copied off the site, or out of another dataset — and the actor recognizes it and scrapes just that ad directly, skipping the search/listing step entirely. Anything else in Start URLs is treated as a search and paginated as usual. The two are told apart automatically, by whether the URL carries an ad id, so a mix of search and single-ad URLs in the same run works with nothing to configure. Ad URLs are rewritten onto the English site the same way a search URL is.
The filter fields are a fallback
makes, priceFrom/priceTo, yearFrom/yearTo, mileageFrom/mileageTo, fuelType,
bodyType, gearbox, city, validInspectionOnly, withVinOnly and hideAuctions exist for
callers building input programmatically who don't have a URL to hand. They rebuild an Autogidas
search from scratch and reach only a subset of what the site's own search can express — anything
else the site offers is reachable only by pasting a URL.
They're used only when Start URLs is empty — set a Start URL and every filter field is silently ignored (the run log names each one it dropped, so nothing fails quietly). One thing worth knowing if you rely on them: Autogidas puts make and model in the URL path, not a query parameter, so each make/model combination becomes its own search and the actor runs them all. The make list is a suggestion, not a whitelist — it's read off the site's own picker, so a make it omits can still be typed in — and models are free text, since the site publishes no per-make model list.
Input
| Field | Type | Description |
|---|---|---|
startUrls | array | Primary input. One or more autogidas.lt search URLs. |
makes, yearFrom/To, priceFrom/To, mileageFrom/To, fuelType, bodyType, gearbox, city, validInspectionOnly, withVinOnly, hideAuctions | — | Fallback filters, used only when startUrls is empty. |
scrapeDetails | boolean | Visit each ad's own page for the full parameter set, partial VIN, description and every photo. Off = results-page fields only, at a fraction of the requests. Default true. |
maxItems | integer | Stop after this many ads. Default 1000. |
maxConcurrency | integer | Parallel requests. Default 5. |
maxRequestRetries | integer | Retries before giving up on a blocked request — see below. Default 25. |
proxyConfiguration | object | Defaults to Apify's residential proxy pinned to Lithuania — see below. |
skipSeenAds | boolean | Advanced. Skip ads a previous run with this actor already pushed. Default false. |
seenAdsStoreName | string | Names the store skipSeenAds remembers ad ids in. Default AUTOGIDAS-SEEN-ADS. |
See the Input tab for the full schema, including the make list.
A Lithuania-pinned residential proxy is not optional. Autogidas sits behind Cloudflare and 403s a share of foreign and datacenter exit IPs — a measured run with the defaults left alone made 64 requests with zero failures and zero retries; an unpinned proxy fails far more often. The default is already correct; changing it is what breaks runs.
Why maxRequestRetries defaults so high (25). Each retry draws a new proxy session and
exit IP — that's how a working one is found, not a sign something is wrong. A long run warms
the session pool quickly (most requests then succeed first try), but a short run — a search
matching only a handful of ads — never gets that far: one measured 6-ad query needed 10 retries
before a single request succeeded. Retries here are cheap (only blocked requests retry, roughly
half a second each), so the ceiling is set comfortably above the worst case observed. Lowering
it makes small searches prone to failing outright.
Unlike some sibling actors on other Lithuanian car sites, there's no pagination cap — the full ~28,000-ad catalogue is reachable from a single broad search.
Output
One dataset record per ad. Known parameters are mapped to typed fields, and every label/value
row from the ad's own parameter table is additionally kept verbatim in rawParameters — so a
label the site adds or renames shows up as a new key instead of silently vanishing.
{"id": "12345678","url": "https://autogidas.lt/en/skelbimai/automobiliai/bmw/320-12345678.html","title": "BMW 320","make": "BMW","model": "320","price": 12500,"currency": "EUR","year": 2015,"mileageKm": 184000,"fuelType": "Diesel","gearbox": "Automatic","engineCapacityL": 2,"powerKw": 135,"vinPartial": "WBA1234567890","location": "Vilnius","sellerName": "Auto Deleris","imageUrls": ["https://img.autogidas.lt/full/1_2_555.jpg"],"isSold": false,"rawParameters": { "Body Type": "Saloon / sedan", "CO2 emission, g/km": "128" },"scrapedAt": "2026-09-04T08:40:34.746Z"}
You can download the dataset in JSON, CSV, Excel, HTML, XML or RSS from the Export button on the Output tab, or pull it through the Apify API for automation.
Data fields
| Field | Description |
|---|---|
id, url | Ad id and canonical URL. |
title, make, model | Listing title, and make/model read from the page's own breadcrumb. |
price, currency | Asking price. |
year, firstRegistration | (firstRegistration on detail pages only) |
mileageKm | Odometer reading. |
fuelType, gearbox, bodyType | As shown on the ad. |
engineCapacityL, powerKw | Engine size and power. |
drivenWheels, doors, color, seats, cylinders, gears, wheelDiameter, steeringSide | (detail pages only) |
vinPartial | (detail pages only) The VIN prefix Autogidas displays — the site masks the rest behind a click-to-check control the actor doesn't interact with. |
defects, euroStandard, technicalInspectionUntil, co2Gkm, registrationTaxEur, firstRegistrationCountry, weightKg | (detail pages only) |
fuelConsumptionCity/Highway/Combined | (detail pages only) Litres per 100 km. |
location | Seller's stated city. |
sellerName | Dealer or private-seller name as the ad displays it. |
description | (detail pages only) Free-text ad description. |
imageUrls | This ad's own photos, deduplicated to the highest resolution available per photo. |
isSold | Whether the ad is flagged sold. |
rawParameters | (detail pages only) Every label/value row from the ad, verbatim — the safety net for anything not mapped above. |
scrapedAt | ISO timestamp of extraction. |
Consistency with the sibling Autoplius actor
This actor has a sibling, the Autoplius.lt Car Ads Extractor, covering a second Lithuanian car marketplace. Every field the two sites both publish uses the same name and type in both actors' output, so a pipeline consuming either dataset can treat them interchangeably for the fields they share. A few fields deliberately differ, because the sites themselves differ:
vinPartialhere is always just the visible (usually masked) prefix text Autogidas shows, unvalidated. The sibling actor'svinisnullunless the value looks like a genuine, unmasked VIN — a different kind of value, not the same field under two names.sellerName,cylinders,gears,firstRegistrationCountry,steeringSide,defectsand per-context fuel consumption exist here because Autogidas' parameter table publishes them and the sibling site doesn't.city,validInspectionOnly,withVinOnlyandhideAuctions(input) exist here because Autogidas' search exposes them; the sibling site doesn't, so it has no equivalent.
These field names and shapes are meant to stay stable — a schema change here should be considered alongside the sibling actor's, not made independently.
Pricing / cost estimation
This actor bills on Apify's standard pay-per-usage compute-unit model — there's no separate per-result charge. It's HTTP-only (no browser rendering at any point), which keeps the baseline cost low; the two things that scale cost from there, both on the Input tab, are:
scrapeDetails. Results-page-only runs are cheap: one request per 20 ads. Full details cost one extra request per ad — turn it off if you only need price/year/mileage/location.maxItems. Autogidas has no pagination cap, so a broad search really can reach the full ~28,000-ad catalogue if you let it.
A typical scrapeDetails: true, maxItems: 1000 run on the default 1024 MB should stay well
under the Apify Free plan's monthly compute-unit allowance — check the Runs tab for exact
figures after your first run.
Tips for optimizing runs
- Turn
skipSeenAdson for a recurring/scheduled search. It remembers every ad id already pushed in a store that survives across runs, so a daily "what's new" run only pays for genuinely new listings. Tradeoff: an ad already seen is never revisited, so a price change or a sold flag on an old ad won't be picked up — run occasionally with it off for a full refresh. - Don't lower
maxRequestRetrieson a small search. It's the actor's only recourse against Cloudflare (there's no browser fallback tier) — see the Input section above for why the default is set as high as it is. - Don't raise
maxConcurrencymuch past its default. Cloudflare's challenge rate is sensitive to burstiness, and a blocked run costs more in retries than a slightly slower one would have cost outright.
FAQ
Is this legal? The actor only reads pages any visitor can load without logging in. You're responsible for how you use the extracted data — check Autogidas' terms of service and applicable law (e.g. GDPR if a description ever includes personal data) for your use case.
Why is vinPartial not a full VIN? Autogidas masks the VIN behind a click-to-check control
on the ad page; the actor doesn't click it, so only the visible prefix is reported.
A run returned 0 ads / lots of 403s. Almost always a proxy problem — confirm
proxyConfiguration is still the LT-pinned residential default (see above). If it's already
correct, try raising maxRequestRetries further; this actor has no browser fallback tier to
fall back on, so retrying with a fresh session is the only way through a persistent challenge.
Found a bug or need a custom field? Open an issue on the actor's Issues tab in Apify Console, or reach out about a custom build for your exact use case.

