Eurovision Results & Scoreboards
Pricing
from $0.85 / 1,000 country or votes
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
Maintained by CommunityActor stats
1
Bookmarked
3
Total users
1
Monthly active users
9 days ago
Last modified
Categories
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?
| Field | Type | Description |
|---|---|---|
rowType | string | result or entry |
contestYear | number | Eurovision Song Contest year |
stageName | string | final, semifinal1, semifinal2, or entry_list |
countryCode, countryName | string | Competing country |
artistName, songTitle | string | Entry metadata |
runningOrder | number | Running order in the selected stage |
place | number | Stage ranking |
qualifiedForFinal | boolean | Whether a semi-finalist reached the final |
totalPoints, publicPoints, juryPoints | number | Aggregated result points |
pointsBreakdown | string | jury_public_split, total_only, or not_available |
dataStatus, sourceName, sourceUrl | string | Source and fallback audit fields |
warnings | array | Notes about incomplete or ambiguous source data |
runId | string | Optional workflow identifier copied from input |
How to use it
- Set Start Year and End Year.
- Keep Stages as Final only for the cleanest default dataset.
- Choose All stages or Semi-finals only when you need those stage rows.
- Leave Include Country-by-country Votes disabled for compact exports.
- Enable Include Country-by-country Votes only when you need voter-by-voter scoreboards.
- 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.
resultrows are the main output: one country in one selected stage.entryrows are emitted only when a source has an entry list but no stage result.- Country-by-country votes are written only to the
Vote Detailsdataset when Include Country-by-country Votes is enabled. The defaultEurovision Resultsdataset 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.