Travelstart Flights Scraper | Africa OTA Fares avatar

Travelstart Flights Scraper | Africa OTA Fares

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Travelstart Flights Scraper | Africa OTA Fares

Travelstart Flights Scraper | Africa OTA Fares

Scrape Travelstart flight search results & airport suggestions across .com / .co.za / .com.ng / .co.ke. Extract fares, airlines, segments. Export Excel/CSV/JSON. Unofficial — not affiliated with Travelstart.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

1

Monthly active users

7 days ago

Last modified

Share

Travelstart Flights Scraper | Africa & Global OTA

Every Dataset row has a stable string id and rowType: flight_itinerary, hotel, bus_trip, bus_location, or opt-in room. maxResults is the most rows for each search route/query or each hotel ID (default 70), and is shared across all row types for that input. Larger values are collected in parts of up to 70 rows; the whole run stops at your maximum total charge. includeRooms=false by default; when enabled, room/rate offers become separately billed rows while the hotel retains room count and minimum/maximum room price.

Scrape Travelstart flight search results and airport / city suggestions across Africa and global Travelstart sites — then download structured itineraries as Excel, CSV, or JSON.

Use this Actor as a practical Travelstart flights data API for South Africa, Nigeria, Kenya, and the global .com market. Pick a country site, enter origin / destination IATA codes (or city text), set dates and cabin, and get Dataset rows with prices, airlines, segments, stops, and trip metadata.

  • Scrape Travelstart flight search (return, one-way, multi-city style trips)
  • Resolve airports / cities via suggestions (lc.json autocomplete)
  • Cover hosts such as travelstart.com, travelstart.co.za, travelstart.com.ng, travelstart.co.ke
  • Extract fares, airlines, segments, baggage flags, and outbound / inbound itineraries
  • Export to Excel / CSV / JSON, or connect Make, n8n, Zapier, Python, or the Apify API
  • Pay per event — Actor start + each Dataset result; platform usage is included (you do not pay separate Apify compute on top)

Unofficial tool. This Actor is not affiliated with, endorsed by, or sponsored by Travelstart. It collects publicly reachable shopping surfaces and does not complete bookings or access private accounts.


What does the Travelstart Flights Scraper do?

Travelstart Flights Scraper lets you extract structured flight, hotel and bus inventory from Travelstart without running your own anti-bot browser fleet. Give it a route (for example JNB → CPT) or a city, dates, and a mode, then start a run.

Under the hood, the Actor:

  1. Validates your input (mode, country site, route, dates, cabin, travellers)
  2. Enforces free-tier caps when you are on a free Apify plan
  3. Calls the control-plane broker, which dispatches to the managed worker (travelstart-com) on ns515786
  4. Reads Travelstart's own guest search answers (flights, hotels with prices, bus trips, suggestions) into normalized records
  5. Pushes Dataset rows ready for Excel / CSV / JSON export
  6. Writes RUN_SUMMARY (and ERROR_SUMMARY on failure) to the key-value store

You run it like any other Apify Actor — schedule it, call it from the API, or plug it into automations.


What Travelstart data can I extract?

DataFlightsHotelsBusesSuggestions
Price / currency✅ total + fare breakdown✅ per stay, taxes, commission, discount✅—
Carrier / propertyairline code + namehotel name, type, stars, rating, reviewsbus line, service, class—
Times / placesper-leg segments, airports, terminals, stops, durationaddress, suburb, city, coordinates, distancedeparture / arrival station and timeIATA, city, airport, locationId
Extrasbaggage, cheapest / fastest flags, deep linkfree cancellation, meal plans, images; details: hotel phone, postal code, policies, facilities, room offersavailable seatscountry
Trip types / optionsreturn, one-way, multi-city; 4 cabins; 20+ marketsrooms, adults, children ages, currencyone-way / return—

Closed (clear failure, never a fake empty success): carsSearch (Travelstart's car pages sit behind Cloudflare Turnstile and the car API gateway answers 403) and packages (no package data endpoint).


Why scrape Travelstart?

Travelstart is a major African / global flight OTA with strong coverage in markets such as South Africa, Nigeria, and Kenya. Teams scrape Travelstart to:

  • Monitor flight prices and availability on popular African routes
  • Compare airline / fare signals for JNB, CPT, DUR, LOS, ABV, NBO, and more
  • Enrich catalogs with airport / city suggestions (IATA + locationId)
  • Feed BI dashboards, pricing tools, or AI agents with structured OTA rows

Compared with generic Google Flights or Skyscanner scrapers, this Actor targets Travelstart-specific shopping results across multiple Travelstart country sites in one input surface.


More Actors like this

Need another travel OTA or a different vertical? Use a dedicated Actor below for structured fields. Use this Actor for Travelstart flight search and airport suggestions across Africa sites.

Similar travel & stays Actors

Prefer another specialized scraper?

If your target has a specialized Actor below, use that first — usually cheaper and more structured than a generic scrape.

Jobs & Freelance

E-commerce

Real Estate

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.


How to scrape Travelstart flights (no code required)

  1. Create a free Apify account
  2. Open Travelstart Flights Scraper
  3. Choose a mode: flightsSearch (default) or suggestions / airportSuggest
  4. Choose a country site (default travelstart.com)
  5. Enter from + to (flights) or query (suggestions)
  6. (Optional) Set departureDate / returnDate, tripType, cabin, travellers
  7. Click Start and download the Dataset as JSON, CSV, Excel, or JSONL

Start with maxResults: 5–10 to verify the query, then scale up.


How much does it cost to scrape Travelstart?

This Actor uses pay-per-event pricing. You are charged for:

EventPrice
Actor Start (apify-actor-start)$0.005 per start
Result (apify-default-dataset-item)$3.00 / 1,000 results ($0.003 each)

Platform usage costs are included — you do not pay separate Apify compute/proxy usage for this Actor on top of the event prices above (User pays platform usage costs = No).

Example cost estimates

Results collectedApprox. event cost*
100~$0.31
1,000~$3.01
10,000~$30.01

*Assumes one Actor start at default memory billing for start events, plus $0.003 per Dataset item. Exact start billing can scale with allocated memory (one start event per GB, minimum one).

Free Apify trial credit can cover a small test run — try maxResults: 5 first.

Free-tier caps (Actor developer limits)

CapValue
Free Apify-plan runs of this Actor10 total
Free results / run200
Paying Apify usersUnlimited runs (schema max still applies)

These limits are enforced in Actor code (set by the Actor developer, not Apify). When the run cap is hit, the Actor finishes successfully with RUN_SUMMARY.status = FREE_TIER_LIMIT and a clear status message.


Input

Open the Input tab for the full form. Common fields:

FieldDescription
modeflightsSearch, suggestions, hotelsSearch, hotelDetails, hotelsRecommended, buses, busLocations (carsSearch / packages are closed)
countrySitetravelstart.com (default), .co.za, .com.ng, .co.ke, or a market code (AE, EG, GH, TZ, BW, …)
from / toFlights: IATA or city. Buses: city names (IATA codes are turned into their city)
querySuggestions text; hotel city / place; bus stop name
departureDate / returnDateYYYY-MM-DD (return empty for one-way)
tripTypereturn, oneway, multi (fill legs); roundtrip / multicity accepted
legsMulti-city: [{"from","to","departureDate"}, …]
cabinECONOMY, PREMIUM, BUSINESS, FIRST
adults / children / infants / youngAdultsTraveller counts (hotels: adults per room; buses: passengers)
checkin / checkout / rooms / childrenAges / currencyHotel stay (default check-in in 24 days, 1 night, ZAR)
hotelIdshotelDetails: ids from a hotel search (e.g. lp2a8f4)
scrapeDetailshotelsSearch: also read each hotel's details (its own phone, postal code, policies)
includeRoomsOpt in to separately billed room/rate rows (default false)
maxResultsRows per search route/query or hotel ID, up to 1000 (default 70; collected in parts of up to 70)
workerBaseUrlAdvanced allowlisted worker override (optional)

Input example (flights)

{
"mode": "flightsSearch",
"countrySite": "travelstart.co.za",
"from": "JNB",
"to": "CPT",
"tripType": "return",
"departureDate": "2026-08-20",
"returnDate": "2026-08-27",
"cabin": "ECONOMY",
"adults": 1,
"maxResults": 20
}

Input example (hotels in a city)

{
"mode": "hotelsSearch",
"query": "Cape Town",
"checkin": "2026-11-10",
"checkout": "2026-11-12",
"adults": 2,
"scrapeDetails": true,
"maxResults": 30
}

Input example (bus trips)

{
"mode": "buses",
"from": "Johannesburg",
"to": "Cape Town",
"tripType": "oneway",
"departureDate": "2026-11-10",
"maxResults": 50
}

Input example (suggestions)

{
"mode": "suggestions",
"query": "Johannesburg",
"countrySite": "travelstart.com",
"maxResults": 8
}

Output

You can download the dataset extracted by Travelstart Flights Scraper in formats such as JSON, HTML, CSV, or Excel.

Each Dataset item includes mode / site metadata plus fields such as:

FieldDescription
mode / countrySiteCollection mode and Travelstart host
directionoutbound, inbound, or bundled
idItinerary id when present
airlineCode / airlineNameMarketing / validating carrier signals
amount / currencyCode / priceTextPrice signals
segmentsLeg details (times, airports, flight numbers)
stops / durationMsRoute complexity
origin / destinationRequested route
iata / locationIdSuggestion fields
phones / emailsBusiness contact arrays; empty when the opened entity surface has no such contact
address / geoStructured location clues; area-level geography is not promoted to a street address
person / org / webNamed contact, business identity, and entity-owned website/social links
leadSource / leadRevealWhere the lead came from and how it was exposed
leadAbsencesPer-field reason for missing lead data: 本站无, 闸门锁, or 未验证
capturedAtCapture timestamp

Output example

{
"type": "flight_itinerary",
"mode": "flightsSearch",
"direction": "outbound",
"id": 0,
"amount": 849,
"currencyCode": "ZAR",
"priceText": "ZAR849",
"airlineCode": "FA",
"airlineName": "FlySafair",
"stops": 0,
"origin": "JNB",
"destination": "DUR",
"countrySite": "travelstart.co.za",
"source": "travelstart_flightResults",
"phones": [],
"emails": [],
"address": {
"street": null,
"unit": null,
"locality": null,
"region": null,
"postalCode": null,
"country": null,
"full": null
},
"geo": null,
"person": null,
"org": {
"name": "FlySafair",
"id": "FA"
},
"web": {
"website": null,
"socials": []
},
"leadSource": "search",
"leadReveal": "visible",
"leadAbsences": {
"phones": "本站无",
"emails": "本站无",
"geo": "本站无",
"address.street": "本站无",
"address.unit": "本站无",
"address.locality": "未验证",
"address.region": "本站无",
"address.postalCode": "本站无",
"address.country": "未验证",
"address.full": "本站无",
"person": "本站无",
"web.website": "本站无",
"web.socials": "本站无"
}
}

Field presence depends on mode and what the public page exposes for that run.

Lead and contact fields

Every emitted flight or suggestion row includes the complete lead shape below. Empty values are intentional only when leadAbsences explains why they are missing.

FieldTypeTravelstart meaning
phones[{value, type, e164?}]Entity-owned mobile, landline, WhatsApp, or similar numbers. Opened airport, airline, and car-provider surfaces did not expose these.
emails[{value, type}]Entity-owned contact email. Travelstart support mailboxes are deliberately excluded from business rows.
address{street, unit, locality, region, postalCode, country, full}Structured entity location. unit is the street/building number (门牌). City or airport-area text may populate locality/country, but it is not a full address.
geo{lat, lng} or nullCoordinates that supplement an address. Coordinates do not replace a missing street or unit.
person{name, role?} or nullNamed person attached to the airport, airline, or provider. None was exposed on the opened business surfaces.
org{name, id?} or nullAirport, airline, or provider identity. The accepted flight run returned APG Airlines (A1) and Air Peace (P4).
web{website, socials[]}Entity-owned website and social links. Travelstart corporate links are isolated and are not copied onto airline, airport, or provider rows.
leadSourcesearch|detail|entity|contact|reveal-xhrSurface that supplied the lead. Flights use search; airport/city suggestions use entity. Both come from guest-visible data.
leadRevealvisible|click|xhr|gated|image|absentHow the lead became available. Current opened flight and suggestion fields use visible; no contact reveal click or XHR is required.
leadAbsencesobjectPer-field explanation using 本站无 (not present on the opened surface), 闸门锁 (blocked), or 未验证 (not established by the measured path).

Suggestions may preserve only the parent area, for example Accra, even when recon observed the more specific airport organization Kotoka International Airport. The Actor keeps the upstream entity and geography as returned. It does not hardcode the recon sample or turn area-level text into a street, unit, postal code, or full address.

Reveal cost

  • Flight organization fields come from the guest flight result payload (sessionStorage.flightResults) and visible result/detail data. No booking, login, traveller, or payment step is opened.
  • Airport/city organization fields come from the public suggestions JSON. Suggestions have no pager and need no reveal click.
  • Recon found no valid phone/email/address reveal control on the opened business surfaces, so the worker does not spend an extra click or XHR to manufacture contact fields.
  • Browser work and residential egress run in the managed worker. The thin Actor only validates input, calls the worker, and writes Dataset rows.

Honest limitations

  • On the opened airport, airline, and car-provider surfaces, entity phone, email, full street/unit address, named person, entity website, and entity social links are 本站无. These empty fields are accompanied by leadAbsences.
  • Flight rows may leave address.locality and address.country as 未验证 when the itinerary payload does not bind an area to the airline entity.
  • Travelstart Contact/About phone numbers, mailboxes, legal organization details, and corporate social accounts describe the platform itself. They are never attached to an airport, airline, itinerary, or car-provider lead.
  • Hotel rows carry the hotel's own phone only after its details page is read (scrapeDetails or hotelDetails); until then leadAbsences.phones is 未验证. Hotels have no email or website on Travelstart.
  • Hotel search prices are for the whole stay in the chosen currency; the old host hotel.travelstart.com is dead (Cloudflare 522) and is not used.
  • Buses: Intercape, Carma and Eldo answer. intercity, Computicket and autopax are listed by Travelstart's stop search but its booking backend answers "Unknown provider" for them.
  • Flight prices come in the market's currency; markets other than ZA / GO / KE search on travelstart.com with their own country code.
  • Cars and packages are closed: Turnstile + 403 car API gateway; no package data endpoint.

Coverage matrix

DimensionCoverage
Country sitestravelstart.com (default) + .co.za / .com.ng / .co.ke + market codes (AE, BH, BW, DZ, EG, GH, JO, KW, LY, MA, ME, MW, NA, OM, PK, QA, SA, TN, TT, TZ)
ModesflightsSearch · suggestions / airportSuggest · hotelsSearch · hotelDetails · hotelsRecommended · buses · busLocations
Measured 2026-10-09flights ZA / GO / KE / NG / AE / EG / GH / TZ / BW, multi-city, BUSINESS / PREMIUM; hotels Durban (443) and Cape Town (1017); buses JHB → CPT (Intercape 23, Eldo 17, Carma 2)
Closedcars (Turnstile) · packages (no data endpoint)

Tips for best results

  • Prefer IATA codes (JNB, CPT) over ambiguous city strings when possible
  • Use maxResults: 2–5 for first smoke tests, then raise the cap
  • Domestic South African routes often return separate outbound + inbound lists (isBundled=false)
  • Do not rely on README sample inputs for production monitoring — rotate routes and dates
  • Hotels: one city search returns the whole city (hundreds of hotels) in 5–30 s; scrapeDetails adds about a second per 4 hotels

Architecture and proxy ownership

Apify Actor (input, Dataset, free tier, Standby, PPE)
│ HTTPS + WORKER_AUTH
▼
Control-plane broker /b/travelstart-com (event delivery)
▼
ns515786 worker travelstart-com (plain HTTP: guest search credential, parse, OpenAPI)
▼
Travelstart public flight / hotel / bus search APIs

The Actor never uses Apify proxies and does not send any proxy to the worker. The worker calls Travelstart directly and only falls back to the control plane's exit when a call is refused. Set WORKER_BASE_URL and secret WORKER_AUTH in Actor settings.


Run artifacts

KeyPurpose
INPUT_ECHONormalized non-secret input and resolved worker source
RUN_SUMMARYWorker, market, egress counts, search ids (correlation id / place / bus lines), free-tier, and record metrics
ERROR_SUMMARYStructured failure before valid records are emitted

Integrations & API

  • Schedule recurring Travelstart flight pulls from Apify Console
  • Call the Actor from Python, Node.js, or curl via the Apify API
  • Connect to Make, n8n, Zapier, Google Sheets, or your BI stack

API example

curl -X POST "https://api.apify.com/v2/acts/lentic_clockss~travelstart-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "flightsSearch",
"countrySite": "travelstart.com",
"from": "JNB",
"to": "CPT",
"maxResults": 20
}'

FAQ

Is login required?

No. The Actor targets publicly reachable Travelstart shopping / suggestion surfaces via the managed worker.

Can it book flights?

No. Booking, payment, and traveller checkout flows are intentionally excluded.

Why not cars or packages?

Travelstart's car pages are a third-party Meili embed behind Cloudflare Turnstile and its car API gateway answers 403; there is no package data endpoint. Those modes stay visible and fail with a clear reason. Hotels and buses are supported.

Do I pay Apify platform usage separately?

No for this Actor’s configured PPE plan — User pays platform usage costs = No. You pay the event prices above; platform usage is covered by the Actor developer.

How is this different from Google Flights scrapers?

This Actor scrapes Travelstart OTA results (Africa / global Travelstart hosts), not Google Flights aggregates. Use it when you need Travelstart-specific prices and suggestion IDs.


Use this Actor only for lawful purposes and in line with Travelstart terms and applicable laws. You are responsible for how you store and use the data. Prefer low-volume smoke inputs first (maxResults: 2–5).

Our scrapers target publicly shared shopping / suggestion data. Results may still contain personal or business data depending on what the site exposes. Do not scrape personal data unless you have a legitimate reason. If unsure, consult your counsel.


Support

Questions or feature requests: open an issue on the Actor page in Apify Console or contact the developer through Apify.


All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.

Jobs & Freelance

Real Estate

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss