EU Air Passenger Volumes by Country — Eurostat Aviation Data avatar

EU Air Passenger Volumes by Country — Eurostat Aviation Data

Pricing

from $33.50 / 1,000 passenger flow records

Go to Apify Store
EU Air Passenger Volumes by Country — Eurostat Aviation Data

EU Air Passenger Volumes by Country — Eurostat Aviation Data

Official Eurostat air passenger and flight volumes by country, traffic type and period — clean per-observation JSON for aviation demand and market-sizing models.

Pricing

from $33.50 / 1,000 passenger flow records

Rating

0.0

(0)

Developer

NexGen Signal

NexGen Signal

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

9 hours ago

Last modified

Categories

Share

Official source. No API key. Pay per record.

Who this is for and the decision it supports

Aviation analysts, airport and tourism-board planners, and travel-demand modellers who need official European air-passenger volumes without scraping Eurostat by hand.

One record answers: how many passengers/flights moved through a given country for a traffic type and period — a single input to a route-demand, capacity, or market-sizing model.

Sample output

Sample output — EU Air Passenger Volumes by Country — Eurostat Aviation Data

Real rows from a live run of this actor (first 5 rows, selected columns).

One full record from the same run, exactly as delivered:

{
"record_id": "A:FLIGHT:CAF_PAS:INTL:NSCHED:DE:2015",
"dataset_code": "avia_paoc",
"indicator": "Air passenger transport by reporting country (overall)",
"freq": "A",
"freq_label": "Annual",
"unit": "FLIGHT",
"unit_label": "Flight",
"tra_meas": "CAF_PAS",
"tra_meas_label": "Commercial passenger air flights",
"tra_cov": "INTL",
"tra_cov_label": "International transport",
"schedule": "NSCHED",
"schedule_label": "Non-scheduled",
"geo": "DE",
"geo_label": "Germany",
"time_period": "2015",
"value": 67893,
"obs_status": null,
"source": "Eurostat",
"source_dataset": "avia_paoc",
"licence": "Eurostat, CC BY 4.0. Reformatted from Eurostat JSON-stat; values unmodified. Third-party content and logos excluded. Commercial-barred geographies removed.",
"attribution": "Source: Eurostat (dataset avia_paoc)",
"caveat": "Passenger and flight measures are counts of carriage/on-board activity, not seat inventories or fares. Values are reproduced verbatim from Eurostat; read national vs. international coverage from the tra_cov code.",
"observed_at": "2026-09-25T17:19:45Z"
}

What one record is

Each record is one Eurostat air-transport observation: country, traffic measure and coverage, schedule type, period, value and unit, with full provenance.

Your first run

Paste this input and run it:

{
"geo": "DE",
"sinceTimePeriod": "2023",
"maxRecords": 10
}

Set geo to a country and get clean per-observation JSON in seconds — no JSON-stat parsing, no Eurostat query builder. Here is a real record from that exact input:

{
"record_id": "A:FLIGHT:CAF_PAS:INTL:NSCHED:DE:2023",
"dataset_code": "avia_paoc",
"indicator": "Air passenger transport by reporting country (overall)",
"freq": "A",
"freq_label": "Annual",
"unit": "FLIGHT",
"unit_label": "Flight",
"tra_meas": "CAF_PAS",
"tra_meas_label": "Commercial passenger air flights",
"tra_cov": "INTL",
"tra_cov_label": "International transport",
"schedule": "NSCHED"
}

What the sample costs: $0.05 per record. The sample above delivers 10 records, so it costs at most $0.50.

Pulling in bulk

Raise Maximum records and widen the period to pull a country's full history, then repeat per country to build the EU panel. A buyer pulls 1,000-10,000 records to assemble a full country x traffic-type x period panel for trend analysis, forecasting, or benchmarking one country against the EU.

To expand from the sample: raise Maximum records, and widen any filters shown in the input. You are billed only for records actually delivered, so a sample stays cheap and a full pull is predictable.

When to run it again

Eurostat republishes avia_paoc as new periods land; re-run with a later sinceTimePeriod to append only the newest observations to a table you keep.

Update schedule: Eurostat releases new periods for this cube on a rolling basis (roughly quarterly as monthly/quarterly data clears). Verified live: the cube returns observations addressable by period; pull the latest period to confirm the current release.

How this is different

Distinct from the fleet's eurostat-monthly-unemployment and other macro cells — different Eurostat cube, different grain. This is air-passenger flow specifically.

Limitations (source coverage vs product coverage)

  • This is COUNTRY-level (and EU-aggregate) traffic, not airport-level or route-level. For airport-pair markets use the US Airport-Pair Fare actor.
  • Values are counts of carriage/on-board activity, not seat inventory or load factors.
  • Coverage is Eurostat's reporting countries and periods; a country with no reported data for a period returns no row for it.

FAQ

Is this real-time?

No. It is the official Eurostat cube, refreshed when Eurostat publishes new periods (roughly quarterly). It is not a live flight feed.

Airport or route level?

Country level. One row is a country x traffic-type x period observation.

What does an empty run mean?

The geo/period combination has no Eurostat observation — try a broader period or a different country code.

How much does it cost? You pay $0.05 per passenger flow record delivered to your dataset (less on higher Apify plans). Set the record limit in the input to cap what a run can cost. Records that are not delivered are never charged.

How do I get the data out? Every run saves its records to an Apify dataset. You can download it as JSON, CSV, Excel, XML or HTML from the run page, or read it through the Apify API.

Can I run it on a schedule? Yes. Use Apify Schedules to run it daily, weekly or monthly, with the same input each time.

Can I call it from my own code? Yes. Call nexgensignal/eu-air-passenger-flow-records through the Apify API or the Apify Python and JavaScript clients, pass the same JSON input as the form, and read the dataset when the run finishes.

What happens if the source is down? The run ends with a clear status message, and nothing is charged for records that were not delivered.

Input fields

Every input this actor accepts, read from its input schema:

FieldTypeDefaultDescription
sinceTimePeriodstring"2015"Return observations from this period onward. Use a year (2015), a quarter (2015-Q1) or a month (2015-01). Earlier start = more records.
maxRecordsinteger500Maximum records delivered and billed. You are billed only for records actually delivered. Raise it to pull the full set.
geo (required)string"DE"Eurostat geo code to pull (e.g. DE, FR, IT, ES). Required: this cube is too large to return in one request, so it is retrieved one territory at a time.

Output fields

Every field in each delivered record, read from its output schema:

FieldTypeMeaning
record_idstringComposite source-native key across all dimensions.
dataset_codestringEurostat dataset code.
indicatorstringIndicator name.
freqstringfreq dimension code, verbatim.
freq_labelstringfreq dimension label, verbatim.
unitstringunit dimension code, verbatim.
unit_labelstringunit dimension label, verbatim.
tra_measstringtra_meas dimension code, verbatim.
tra_meas_labelstringtra_meas dimension label, verbatim.
tra_covstringtra_cov dimension code, verbatim.
tra_cov_labelstringtra_cov dimension label, verbatim.
schedulestringschedule dimension code, verbatim.
schedule_labelstringschedule dimension label, verbatim.
geostringgeo dimension code, verbatim.
geo_labelstringgeo dimension label, verbatim.
time_periodstringTime period, verbatim (e.g. 2024-Q1 or 2024-01).
valuenumberObservation value, reproduced verbatim (published zeros kept).
obs_statusstringEurostat observation status/flag when present, verbatim.
sourcestringData source (Eurostat).
source_datasetstringSource dataset code.
licencestringLicence and reformatting notice.
attributionstringRequired attribution string.
caveatstringInterpretation caveat.
observed_atstringUTC timestamp the record was retrieved.
  • us-airport-pair-fare-records — US airport-pair fare and traffic benchmarks (route level)
  • eu-business-demography-records — EU firm formation and survival
  • eu-regulatory-change-records — EU legal acts affecting the sector

Source, licence and how it is built

Source and licence are carried on every record (source, licence, attribution, observed_at). The actor reads only the official public endpoint, honours the source's robots and licence terms, and emits values unmodified with full provenance. Records are keyed on a stable id so re-runs upsert cleanly into a table you keep. Row delivery and billing are exactly equal: you are charged once per record delivered (push-then-charge), so an empty run costs nothing.

Part of NexGen Signal — official-source data products.