easyJet Scraper
Pricing
from $3.99 / 1,000 results
easyJet Scraper
Scrape public easyJet flight-search and low-fare route responses for one-way and round-trip itineraries when exact-date offers are exposed, with truthful diagnostics for month-level-only pages.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Coding Frontned
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
5 days ago
Last modified
Categories
Share
What does easyJet Scraper do?
This Actor reads public easyJet flight-search pages and extracts normalized flight-offer records when the public response exposes exact-date itinerary objects. Structured searches use airport codes, travel dates, trip type, and passenger counts to resolve the official public cheap-flights route. Fully formed public easyJet URLs are also supported.
The Actor does not log in, enter payment details, call private booking endpoints, solve CAPTCHAs, bypass access controls, or convert a month-level minimum into a dated flight.
Current public-source boundary
The source boundary is HTTPS easyjet.com, including the public cheap-flights route. The current route page can render a low-fare finder with month-level prices such as September 2026 £31.99 and no exact-date flight objects. In that case the Actor emits a MONTHLY_FARE_ONLY diagnostic. A direct HTTP access challenge is emitted as SOURCE_BLOCKED. These are useful run outcomes, not successful exact-date flight extraction.
Input
Use one or more structured searches or public easyJet URLs. The Actor requires at least one valid search or URL.
| Field | Type/default | Behavior |
|---|---|---|
| searches | array | Objects with origin, destination, and departureDate. Optional returnDate, tripType, and passenger counts are source-request context. |
| startUrls | array | Fully formed HTTPS easyJet URLs. Invalid or duplicate entries are ignored; use a structured search when the URL is not valid. |
| maxItems | integer, default 100, range 1–1000 | Global maximum for emitted flight and diagnostic rows. |
| requestTimeoutSecs | integer, default 30, range 5–120 | Per-request timeout. |
| maxRetries | integer, default 1, range 0–2 | Finite retries for transient HTTP or transport failures. |
| retryDelayMs | integer, default 500, range 0–10000 | Bounded retry backoff in milliseconds. |
| requestDelayMs | integer, default 0, range 0–10000 | Respectful delay between ordered public requests. |
| proxyConfiguration | object, optional | One authorized standard Apify Proxy route for public requests; use is reported in OUTPUT. |
| fixtureJson | string, optional | Bounded offline JSON used for deterministic QA; no public request is made when present. |
For structured searches, normalized offers are retained only when their source-backed departureDate matches the requested departureDate. Passenger counts are carried into records when a source exposes or the request supplies them; they do not create availability that the source did not provide.
Output
Each dataset item is either a flight record or a diagnostic record.
Normal flight fields contain only public business/source data: sourceUrl, canonicalUrl, sourceDomain, origin, destination, departureDate, optional returnDate, tripType, airline, optional flight number and times, durationMinutes, stops, price, currency, fareType, cabinClass, availability, passengerCount, bookingUrl, observedAt, and scrapedAt. Runtime identifiers, status flags, redirect/transport details, and extraction instrumentation are omitted from normal rows.
Diagnostic fields include recordType, dataAvailable=false, recordId, diagnosticCode, message, sourceUrl, canonicalUrl, finalUrl, sourceDomain, transport, extractionMethod, the requested route context when available, and scrapedAt.
The OUTPUT key-value record contains recordsCount, recordsStored, offerCount, diagnosticCount, observedDiagnosticCount, failedRequests, blockedCount, pagesFetched, pagesProcessed, dataAvailable, duplicate and drop counters, and completion time. Counts describe rows actually emitted to the dataset; suppressed diagnostic count is zero because diagnostics are not silently discarded.
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Example structured input
{"searches": [{"origin": "LGW","destination": "AMS","departureDate": "2026-10-01","adults": 1,"tripType": "oneWay"}],"maxItems": 100}
Example normal record
{"origin": "LGW","destination": "AMS","departureDate": "2026-10-01","airline": "easyJet","flightNumber": "U21234","price": 49.99,"currency": "GBP","sourceUrl": "https://www.easyjet.com/en/cheap-flights/LGW/AMS","canonicalUrl": "https://www.easyjet.com/en/cheap-flights/LGW/AMS"}
Tips, cost, and limitations
Each public URL is fetched directly or through one supplied standard Apify Proxy route with bounded retries, an 8 MiB response-body limit, a three-hop official-host redirect limit, and a per-request timeout. Proxy rotation, login, stealth, CAPTCHA solving, and browser rendering are not used. Keep batches small and respect easyJet terms, robots guidance, rate limits, privacy obligations, and applicable law.
Actor cost depends on the actual runtime and platform allocation, including request time, retries, storage, and any platform resources used. No fixed price is promised here.
The Actor is not affiliated with easyJet. Public fare availability, prices, and dates can change after a run. A local fixture proves parser behavior only; it does not prove current source availability or Apify Cloud qualification.
Local validation
From this Actor directory:
npm installnpm testnpm run lintnpm run validatenpm run checkapify validate-schemaapify run --purge --input-file test/inputs/fixture.json
To validate a particular stored run, set APIFY_LOCAL_STORAGE_DIR to that run's isolated storage before npm run validate. No remote build, run, deployment, or account mutation is performed by these local checks.