API and downloads
Every table on this site can be downloaded as CSV or JSON, and the same data is available from a read-only API. No key or sign-up is needed.
Quick start
curl "https://unindex.org/api/v1/votes?body=unsc&country=RUS&position=abstain&from=2020&format=csv"- Base path:
/api/v1/. Index: /api/v1. OpenAPI description: /api/v1/openapi.json. - Formats: add
format=csvfor a spreadsheet-ready file (UTF-8, comma-separated, one header row). The default is JSON:{ "meta": {…}, "data": […] }. The meta block carries the licence, a citation, the counts and anextlink when there is another page. - Paging: endpoints marked “paged” take
limitandoffset. - Errors: JSON
{ "error": { "status": 400, "message": "…" } }with the matching HTTP status. - Fair use: about 10 requests per second per address (short bursts allowed), with a 5-minute cache. For the full history, download the source files directly (links below) instead of paging through the API.
- CSV safety: text cells that begin with
=,+,-or@are prefixed with an apostrophe so spreadsheets do not run them as formulas. - CORS is open (
Access-Control-Allow-Origin: *) so pages can call the API from a browser.
Licence and how to cite
Vote, veto and resolution data: © United Nations, non-commercial use with attribution (UN Digital Library terms). Ideal points: Bailey, Strezhnev & Voeten, CC0. Group membership: CIA World Factbook (public domain) and Wikidata (CC0). Computed fields (agreement, clusters, topics, calendar items): UNIndex, same non-commercial attribution terms as the source data.
You must attribute the sources, and the vote and veto data may be used for non-commercial purposes only. If you need to use the UN data commercially, ask the United Nations Dag Hammarskjöld Library for permission; this site cannot grant it.
Suggested citation
UNIndex (2026). United Nations voting data explorer. https://unindex.org. Underlying data: United Nations Dag Hammarskjöld Library, Security Council Voting Data (v7, Oct 2026) and General Assembly Voting Data (v6, Oct 2026); UN Peace & Security Data Hub, Vetoes since 1946. Accessed 2026-10-31.
BibTeX
@misc{unindex,
title = {UNIndex: United Nations voting data explorer},
author = {{UNIndex}},
year = {2026},
url = {https://unindex.org},
note = {Data: UN Dag Hammarskj{\"o}ld Library, Security Council and General Assembly Voting Data; UN Peace \& Security Data Hub. Accessed 2026-10-31}
}When you use a specific figure
Say which view or endpoint, the parameters and the access date, for example: “Agreement between France and the United Kingdom in the Security Council, 1946–2026 (UNIndex, /api/v1/agreement?c=FRA,GBR, accessed 2026-10-31)”. Computed values (agreement, clusters, topics, calendar items) are UNIndex's own and their definitions are in the methodology; please cite that page when you rely on them. Ideal points are the authors' work: also cite Bailey, Strezhnev & Voeten (2017), Journal of Conflict Resolution 61(2): 430–456.
Source files
For bulk use, the original datasets are published by their owners:
- Security Council Voting Data (UN Dag Hammarskjöld Library)
- General Assembly Voting Data (UN Dag Hammarskjöld Library)
- Security Council Data – Vetoes Since 1946 (UN Peace & Security Data Hub)
- UN General Assembly Voting Data and Ideal Points (Voeten et al., Harvard Dataverse, CC0)
Endpoints
Votes
GET /api/v1/votespaged
Search adopted Security Council and General Assembly votes. The same filters as the vote browser.
| Name | Meaning |
|---|---|
body | unsc or unga |
q | text in the title or symbol |
country | UN country code (see /api/v1/countries) |
position | with country: yes, no, abstain or non_voting |
topic | topic slug (see /api/v1/topics) |
from | first year |
to | last year |
modality | recorded or without_vote |
dissent | no (at least one no vote) or abstain |
sort | oldest (default is newest first) |
limit | rows per page (default and maximum depend on the endpoint) |
offset | rows to skip |
format | json (default) or csv. CSV is sent as an attachment; the header row names the columns. |
| Field | Meaning |
|---|---|
slug | stable identifier used in UNIndex URLs |
symbol | UN document symbol, e.g. S/RES/2829(2026) |
body | unsc or unga |
date | date of the vote |
title | the UN Library's description |
modality | recorded, or without_vote (adopted without a vote) |
yes / no / abstain / did_not_vote / members | tallies from the source; did_not_vote combines absent and not participating |
meeting / draft | meeting record and draft symbols where the source gives them |
unindex_url / source_url | this site and the UN Digital Library record |
Example: /api/v1/votes?body=unsc&country=RUS&position=abstain&from=2020&format=csv
One vote with its roll call
GET /api/v1/votes/{slug}
The full roll call of one vote. JSON has the vote under meta.vote and countries under data; CSV is the roll call.
| Name | Meaning |
|---|---|
format | json (default) or csv. CSV is sent as an attachment; the header row names the columns. |
| Field | Meaning |
|---|---|
country_code, country | UN code and display name |
name_in_source | the name the UN used at the time |
position | yes, no, abstain, non_voting |
recorded_vote | false when adopted without a vote (positions are then a UN convention) |
permanent_member | Security Council only |
Example: /api/v1/votes/s-res-2829-2026
Countries
GET /api/v1/countries
Every state or entity that voted, with the UN's codes.
| Name | Meaning |
|---|---|
format | json (default) or csv. CSV is sent as an attachment; the header row names the columns. |
| Field | Meaning |
|---|---|
code | UN dataset code (mostly ISO 3166-1 alpha-3) |
name | display name |
iso3 / iso2 / iso3166_3 | ISO codes where valid; iso3166_3 for former states |
former | true for states that no longer exist |
first_seen / last_seen | dates seen voting in the data (not membership dates) |
sc_recorded_votes / ga_recorded_votes | recorded votes counted |
Example: /api/v1/countries?format=csv
A country's votes
GET /api/v1/countries/{code}/votespaged
Every vote of one country with its position.
| Name | Meaning |
|---|---|
body | unsc or unga |
from | first year |
to | last year |
limit | rows per page (default and maximum depend on the endpoint) |
offset | rows to skip |
format | json (default) or csv. CSV is sent as an attachment; the header row names the columns. |
| Field | Meaning |
|---|---|
position | yes, no, abstain, non_voting |
recorded_vote | false for resolutions adopted without a vote |
symbol, date, title, slug | the vote |
Example: /api/v1/countries/grc/votes?body=unga&from=2015&format=csv
Pairwise agreement
GET /api/v1/agreement
Agreement between selected countries. Read shared_votes before agreement.
| Name | Meaning |
|---|---|
c | comma-separated country codes (2 to 30) |
body | unsc (default) or unga |
from / to | years |
topic | topic slug |
merge | 1 to count the USSR as Russia |
format | json (default) or csv. CSV is sent as an attachment; the header row names the columns. |
| Field | Meaning |
|---|---|
country_a, country_b | the pair |
shared_votes | recorded votes where both voted yes, no or abstain |
same_position | of those, votes with the same position |
agreement | same_position / shared_votes |
Example: /api/v1/agreement?c=USA,RUS,CHN&body=unga&from=2016&to=2025
Computed clusters (blocs)
GET /api/v1/blocs
The cluster of each country for the chosen window and algorithm. Same parameters as the Blocs page. Parameters used and modularity are in meta.
| Name | Meaning |
|---|---|
body | unga (default) or unsc |
from / to | years |
algo | hier or louvain |
linkage | average, complete or single |
k | clusters (hierarchical) |
threshold | agreement threshold (Louvain) |
resolution | Louvain resolution |
minShared | minimum shared votes per pair |
minVotes | minimum votes to include a country |
format | json (default) or csv. CSV is sent as an attachment; the header row names the columns. |
| Field | Meaning |
|---|---|
country_code, country | the country |
cluster | cluster number (no meaning beyond grouping) |
bloc_name | descriptive name, e.g. "Mostly NATO and EU members" |
map_x, map_y | 2-D drawing coordinates; axes have no meaning |
Veto events
GET /api/v1/vetoespaged
Vetoes cast in the Security Council since 1946 (UN Peace & Security Data Hub). Includes vetoes of amendments, paragraphs and procedural rulings; one draft can appear more than once.
| Name | Meaning |
|---|---|
limit | rows per page (default and maximum depend on the endpoint) |
offset | rows to skip |
format | json (default) or csv. CSV is sent as an attachment; the header row names the columns. |
| Field | Meaning |
|---|---|
date, year | when |
vetoed_by | space-separated country codes (SUN = USSR, RUS = Russian Federation) |
draft_reference_raw | the source's free-text draft reference |
draft_symbol | only when an S/YYYY/N symbol is present |
short_agenda, agenda, source_url | agenda item and the UN record |
Example: /api/v1/vetoes?limit=50
Expiry dates
GET /api/v1/calendarpaged
End dates written in Security Council resolution titles. Not a forecast.
| Name | Meaning |
|---|---|
region | region slug (see /api/v1/topics) |
topic | theme slug |
kind | mandate, authorization, sanctions, expert_panel, reporting or other |
from / to | dates, YYYY-MM-DD |
limit | rows per page (default and maximum depend on the endpoint) |
offset | rows to skip |
format | json (default) or csv. CSV is sent as an attachment; the header row names the columns. |
| Field | Meaning |
|---|---|
expires_on | the end date as written |
kind, subject | what ends |
stated_in, stated_in_date | the resolution and its date |
final_extension | the title calls it a final extension |
Ideal points
GET /api/v1/ideal-pointspaged
Dynamic ideal-point estimates for the General Assembly (Bailey, Strezhnev & Voeten).
| Name | Meaning |
|---|---|
c | comma-separated country codes |
from / to | years |
limit | rows per page (default and maximum depend on the endpoint) |
offset | rows to skip |
format | json (default) or csv. CSV is sent as an attachment; the header row names the columns. |
| Field | Meaning |
|---|---|
ideal_point | estimate on one dimension |
q5, q95 | 90% credible interval |
n_votes | votes behind the estimate |
Formal group membership
GET /api/v1/groups
EU, NATO, G77, NAM, OIC, AU, Arab League and BRICS membership with sources.
| Name | Meaning |
|---|---|
format | json (default) or csv. CSV is sent as an attachment; the header row names the columns. |
| Field | Meaning |
|---|---|
group_code, group_name | the group |
country_code, country | the member |
start_date / end_date | empty when unknown |
source | cia_factbook, cia_factbook+wikidata or wikidata |
Example: /api/v1/groups?format=csv
Topics
GET /api/v1/topics
Region and theme slugs used by the filters.
| Name | Meaning |
|---|---|
format | json (default) or csv. CSV is sent as an attachment; the header row names the columns. |
| Field | Meaning |
|---|---|
slug, label, kind | kind is region or theme |
Example: /api/v1/topics