Eurovision Results & Scoreboards avatar

Eurovision Results & Scoreboards

Pricing

from $0.85 / 1,000 country or votes

Go to Apify Store
Eurovision Results & Scoreboards

Eurovision Results & Scoreboards

Extract Eurovision Song Contest rankings, running order, total points, jury points, public points, and optional country-by-country vote details.

Pricing

from $0.85 / 1,000 country or votes

Rating

0.0

(0)

Developer

Trove Vault

Trove Vault

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

1

Monthly active users

9 days ago

Last modified

Share

What does Eurovision Results & Scoreboards do?

Eurovision Results & Scoreboards returns normalized Eurovision Song Contest result rows for selected years and stages.

The default output is intentionally compact: one row per country in the selected stage, with rank, country, artist, song, running order, total points, and jury/public splits when the source provides them. Country-by-country vote details are optional and are written to a separate Vote Details dataset.

The actor focuses on the senior Eurovision Song Contest. Junior Eurovision is not included in this version.

Why use Eurovision Results & Scoreboards?

Use this actor when you need a repeatable Eurovision dataset for dashboards, spreadsheets, editorial research, contest-week reporting, fan analytics, or data pipelines.

Main capabilities:

  • Export Eurovision final and semi-final result rows from 1956 onward.
  • Default to final-only output to reduce duplication and cost.
  • Include country, artist, song, running order, rank, qualification status, and points.
  • Include public and jury point splits when the source data provides them.
  • Optionally include country-by-country vote details for detailed analysis.
  • Append rows into an existing Apify dataset with datasetId.
  • Add your own workflow identifier with runId.

What data can it extract?

FieldTypeDescription
rowTypestringresult or entry
contestYearnumberEurovision Song Contest year
stageNamestringfinal, semifinal1, semifinal2, or entry_list
countryCode, countryNamestringCompeting country
artistName, songTitlestringEntry metadata
runningOrdernumberRunning order in the selected stage
placenumberStage ranking
qualifiedForFinalbooleanWhether a semi-finalist reached the final
totalPoints, publicPoints, juryPointsnumberAggregated result points
pointsBreakdownstringjury_public_split, total_only, or not_available
dataStatus, sourceName, sourceUrlstringSource and fallback audit fields
warningsarrayNotes about incomplete or ambiguous source data
runIdstringOptional workflow identifier copied from input

How to use it

  1. Set Start Year and End Year.
  2. Keep Stages as Final only for the cleanest default dataset.
  3. Choose All stages or Semi-finals only when you need those stage rows.
  4. Leave Include Country-by-country Votes disabled for compact exports.
  5. Enable Include Country-by-country Votes only when you need voter-by-voter scoreboards.
  6. Run the actor and download the dataset as JSON, CSV, Excel, XML, or HTML.

Input

Example input:

{
"startYear": 2025,
"endYear": 2025,
"stages": ["final"],
"includeVoteDetails": false
}

For full contest research, set stages to ["all"]. A country that appears in a semi-final and the final will then have one result row for each stage. Enable includeVoteDetails only when you need the separate Vote Details dataset.

Output

Default result row:

{
"rowType": "result",
"dataStatus": "historical_api",
"sourceName": "Eurovision API",
"contestYear": 2025,
"contestName": "Eurovision Song Contest 2025",
"stageName": "final",
"stageDate": "2025-05-17T00:00:00.000Z",
"countryCode": "AT",
"countryName": "Austria",
"artistName": "JJ",
"songTitle": "Wasted Love",
"runningOrder": 9,
"place": 1,
"qualifiedForFinal": true,
"totalPoints": 436,
"publicPoints": 178,
"juryPoints": 258,
"pointsBreakdown": "jury_public_split",
"sourceUrl": "https://eurovisionapi.runasp.net/api/senior/contests/2025"
}

When includeVoteDetails is enabled, votes are written to the separate Vote Details dataset:

{
"rowType": "vote",
"contestYear": 2025,
"stageName": "final",
"countryName": "Austria",
"artistName": "JJ",
"songTitle": "Wasted Love",
"place": 1,
"voteType": "jury",
"fromCountryName": "Sweden",
"points": 12
}

API usage example

curl "https://api.apify.com/v2/acts/trovevault~eurovision-results-scoreboards/runs?waitForFinish=120" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startYear": 2025,
"endYear": 2025,
"stages": ["final"],
"includeVoteDetails": false
}'

Data semantics

Rows are stage-specific.

  • result rows are the main output: one country in one selected stage.
  • entry rows are emitted only when a source has an entry list but no stage result.
  • Country-by-country votes are written only to the Vote Details dataset when Include Country-by-country Votes is enabled. The default Eurovision Results dataset stays one row per country and stage.

The actor does not emit separate contest edition rows. Host metadata is intentionally excluded from the default dataset because it created sparse rows and duplicated result context.

Older contests may only have totalPoints. Modern finals commonly include publicPoints and juryPoints. The pointsBreakdown field tells you whether a row has jury_public_split, total_only, or not_available scoring.

Sources

The primary source is the public Eurovision API at https://eurovisionapi.runasp.net/api/senior/contests/{year}. The API describes itself as an unofficial source for Eurovision participants and votes.

For 2026, the historical API returned 404 Not Found on May 31, 2026. The actor therefore tries EurovisionOdds.org's 2026 results page as a results fallback and merges song titles from Eurovision.com's official 2026 song list when available. Rows from that fallback use dataStatus: "eurovisionodds_results_fallback" and include total points; jury/public splits are left empty unless a reliable split table is parsed.

Limitations

This actor covers the senior Eurovision Song Contest only. It does not include Junior Eurovision, national finals, rehearsals, odds, lyrics, Spotify metrics, YouTube metrics, or broadcaster news.

The primary source API is unofficial. TroveVault normalizes the returned data but does not certify legal finality, voting-rule interpretation, or completeness beyond the source response. Fallback rows are labeled with dataStatus, sourceName, sourceUrl, and warnings so downstream users can audit them.

Some historical years do not include jury/public splits because those fields were not present in the source data or did not apply to the contest format.

FAQ

Does this actor include Junior Eurovision?

No. This version is scoped to the senior Eurovision Song Contest.

Can I export only finals?

Yes. Final only is the default.

Why are some public or jury fields empty?

Older contests and some fallback sources only expose total points. The actor does not invent splits when the source does not provide them reliably.

How do I avoid large runs?

Keep Include Country-by-country Votes disabled and keep Stages set to Final only.

Can I append results to another dataset?

Yes. Fill datasetId to append the same rows to another Apify dataset in addition to the default run dataset.

Changelog

0.1

Initial version with normalized Eurovision final and semi-final result rows, optional vote-detail scoreboards, and labeled 2026 fallback support.