Goldcar Car Rental Rates Scraper (Spain Airport Offices) avatar

Goldcar Car Rental Rates Scraper (Spain Airport Offices)

Pricing

from $1.60 / 1,000 rate delivereds

Go to Apify Store
Goldcar Car Rental Rates Scraper (Spain Airport Offices)

Goldcar Car Rental Rates Scraper (Spain Airport Offices)

Goldcar rental prices per vehicle group and Spanish airport office, from the public availability feed: daily price, total price, mileage policy and pickup location. No login, no browser. 26 major Spanish airports by default; enable monitorChanges for daily price-change alerts.

Pricing

from $1.60 / 1,000 rate delivereds

Rating

0.0

(0)

Developer

Steadfetch

Steadfetch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

38 minutes ago

Last modified

Share

steadfetch/goldcar-rate-extractor

Tested daily. Last verified: 2026-10-30

Returns Goldcar car rental prices per vehicle group and Spanish airport office from the public Goldcar availability feed, as JSON. One item per bookable group and office, with the daily and total price, the mileage policy and the exact pickup/return window.

What it does

  • Queries the public, anonymous Goldcar availability feed (goldcar.es) for one or more Spanish airport offices (IATA codes such as AGP, BCN, TFS, LPA, TJF, ACE, FUE, IBZ, MAH, PMI, ALC, VLC, MAD, SVQ, OVD, VLL, GVD, REU, XRY, KKL, VGO, GRO, LEI, BIO, ZAZ, IBB).
  • Returns one row per bookable vehicle group: carGroup, pricePerDayEur, totalPriceEur, currency, mileagePolicy, pickupLocationIata, locationName, pickupDate, returnDate and scrapedAt.
  • Uses plain HTTP + JSON. No browser, no login, no paywall and no CAPTCHA bypass.
  • Validates every row against the dataset schema before it reaches the dataset, so invalid prices are surfaced instead of published.
  • Keeps a single anonymous session (one cookie jar) for the whole run and re-posts the search for each office, at one request per second per office.
  • Keeps a daily price history in the Steadfetch S3 bucket (written by the scheduled routine only) and, with monitorChanges enabled, delivers price-change alerts to a separate change-alerts dataset.

How to use

Run it from the Apify Console or with the CLI:

$apify call steadfetch/goldcar-rate-extractor --input='{"pickupLocations":["AGP","MAD"],"pickupDate":"2026-11-07","returnDate":"2026-11-14"}'

Read the rows from the run's default dataset (JSON, CSV or the API).

Minimum input

{ "pickupLocations": ["AGP"] }

With no dates the Actor uses a rolling window: pickup 14 days from today and a 7-day rental. With no pickupLocations it checks the twenty-six default Spanish airport offices (AGP, BCN, TFS, LPA, TJF, ACE, FUE, IBZ, MAH, PMI, ALC, VLC, MAD, SVQ, OVD, VLL, GVD, REU, XRY, KKL, VGO, GRO, LEI, BIO, ZAZ, IBB).

Input fields

FieldTypeRequiredDefaultDescriptionExample
pickupLocationsarrayNotwenty-six airportsThree-letter IATA codes of the Goldcar airport offices to query.["AGP","MAD"]
pickupDatestringNotoday + 14 daysRental start date in YYYY-MM-DD format."2026-11-07"
returnDatestringNopickup + 7 daysRental end date in YYYY-MM-DD; after the pickup date and at most 60 days later."2026-11-14"
maxLocationsintegerNo30Safety cap on how many offices are queried (1-50).10
monitorChangesbooleanNofalseWhen true, compares this run with yesterday's saved snapshot and delivers price-change alerts to the separate change-alerts dataset.true

Output

Example output

{
"url": "https://www.goldcar.es/es-es/reservas/disponibilidad/#pickupplace/AGP/pickupdate/2026-11-07%2010:00/dropoffplace/AGP/dropoffdate/2026-11-14%2010:00/",
"title": "Group AA - Mini - Malaga Airport",
"scrapedAt": "2026-10-24T17:30:00.000Z",
"pickupLocationIata": "AGP",
"locationName": "Malaga Airport",
"pickupDate": "2026-11-07",
"returnDate": "2026-11-14",
"carGroup": "Group AA - Mini",
"pricePerDayEur": 4.0,
"totalPriceEur": 28.0,
"currency": "EUR",
"depositEur": null,
"mileagePolicy": "Unlimited"
}

Output fields

FieldTypeDescription
urlstringPublic Goldcar search page for the same office and dates (common envelope, required).
titlestringVehicle group and office, for a quick scan.
scrapedAtdate-timeISO 8601 UTC timestamp of the run (common envelope, required).
pickupLocationIatastringThree-letter IATA code of the pickup office.
locationNamestringEnglish name of the pickup office.
pickupDatedateRental start date.
returnDatedateRental end date.
carGroupstringGoldcar group code plus vehicle category, for example Group AA - Mini.
pricePerDayEurnumberDisplayed daily rate in euros.
totalPriceEurnumberDisplayed total rate in euros for the whole window.
currencystringAlways EUR on the Spanish feed.
depositEurnumber or nullSecurity deposit when published; the availability feed currently does not expose it, so it is null.
mileagePolicystring or nullPublished mileage policy, for example Unlimited or 150 km/day.

New fields are additive and required fields never change, so downstream code can rely on the envelope plus the rate fields above.

Monitor price changes

Set monitorChanges to true to turn the Actor into a price monitor:

{
"pickupLocations": ["AGP", "MAD"],
"pickupDate": "2026-11-07",
"returnDate": "2026-11-14",
"monitorChanges": true
}

The Actor reads yesterday's snapshot from the shared bucket, compares it with the current run and delivers one alert per change to the named change-alerts dataset. The default rates dataset and its schema never change, so existing integrations keep working.

Alert fields: alertType (price-increased, price-decreased, new, disappeared), pickupLocationIata, carGroup, pickupDate, returnDate, previousPriceEur, currentPriceEur, changePercent, previousSnapshotDate, plus the common url and scrapedAt envelope.

The alerts dataset is available in the run's storages as change-alerts (for example through GET /v2/datasets/{datasetId}/items). Alerts are additive to the run start event and are not charged as dataset items.

Only the offices queried in this run are compared. Yesterday's snapshot may cover more offices; the ones you did not request (or that could not be queried because of a transient error) are never reported as disappeared, so a run over a subset such as ["AGP"] never raises false alarms for BCN, MAD or the rest. A requested office that answers with zero rates does still alert: its previous rates appear as disappeared.

How the history works. The scheduled routine saves one snapshot per UTC day under actors/goldcar-rate-extractor/YYYY-MM-DD/rates.json. Customer-triggered runs never write to the bucket (company rule D-33); they only read it. When no previous snapshot exists (first run, or a gap in the series) the Actor logs it and still delivers the rates. For a stable comparison across days, pin pickupDate and returnDate: with the rolling default window, every day queries a different rental window and the comparison keys change. The sample price-change-monitor task prefill pins a fixed window, so edit its dates to an upcoming window inside Goldcar's booking horizon before running or scheduling it; a past date is rejected by the source.

With monitorChanges off (the default) the Actor does not read the bucket, does not create the alerts dataset and behaves exactly as before.

Pricing

Pay-per-event with the two synthetic platform events: apify-actor-start at 0.00005 USD per run (Apify-recommended default, includes the first 5 seconds of compute) and apify-default-dataset-item at 2.00 USD per 1,000 results (0.002 USD per delivered rate). There is no custom per-item event and no Actor.charge() call, so users are never billed twice. Offices without availability and groups without a usable price are never delivered and never billed.

Measured cost per 1,000 results: about 0.011 USD (local run of five offices: 53 rows, 15 HTTP requests, 39.7 s at 256 MB and 0.2 USD per GB-hour), so the price leaves about 99 % margin against the 0.20 USD cost target. Running all twenty-six defaults costs about 0.06 USD per 1,000 results.

Works on the Apify free plan - about 2,499 results for the $5 monthly credit.

FAQ

Does the Actor need a login or a paid subscription to Goldcar? No. It uses the public anonymous availability feed; it never bypasses logins, paywalls or CAPTCHAs. If the source ever serves a CAPTCHA or a block page, the run stops and reports it.

Which offices are supported? Any Goldcar airport office whose IATA code is accepted by the public feed. The default list covers twenty-six major Spanish airports across the Canary Islands, Balearic Islands, and the mainland (AGP, BCN, TFS, LPA, TJF, ACE, FUE, IBZ, MAH, PMI, ALC, VLC, MAD, SVQ, OVD, VLL, GVD, REU, XRY, KKL, VGO, GRO, LEI, BIO, ZAZ, IBB).

Can I compare offices? Yes. Pass several IATA codes; each row carries pickupLocationIata, so you can group and compare prices across offices.

Which price is returned? The rate Goldcar displays for the group in the search results: pricePerDayEur and totalPriceEur for the requested window. Extra products and optional insurance are not added.

When am I charged? Once per run start (apify-actor-start) and once per result saved (apify-default-dataset-item). Failed runs that deliver no results only incur the start event.

Is the output schema stable? Yes. New fields are added additively and required fields never change.

Can I request a new source? Yes. Open an issue in the Steadfetch actors repository describing the public page you want tracked.

Does the Actor save historical data? Yes. The scheduled routine saves a daily snapshot to the shared S3 bucket (actors/goldcar-rate-extractor/YYYY-MM-DD/rates.json); customer-triggered runs never write to it. Set monitorChanges: true to compare against yesterday's snapshot and receive price-change alerts in the separate change-alerts dataset.

Can I get price alerts without scraping twice? Yes. One run with monitorChanges: true returns today's rates in the default dataset and the day-over-day changes in the change-alerts dataset.

Support

Report bugs or request features through the Apify Store page (Issues tab) of the Actor, or through the Steadfetch actors repository issues. Include the run ID and the input used.

Maintenance

This Actor is tested daily: the monorepo CI runs lint, typecheck, schema tests and the publish gate on every push, and the daily catalog QA runs the prefilled input against the live source. If the Goldcar feed changes shape, the output-schema validation fails the run instead of publishing bad data.

Other Steadfetch Actors