{"openapi":"3.1.0","info":{"title":"VoteIsrael public data API","version":"1.0.0","contact":{"email":"sbudaef@gmail.com","url":"https://voteisrael.co.il"},"description":"Anonymous read-only access to the same dated datasets used by VoteIsrael. Shares are percentages of valid votes. National totals include double-envelope votes; localities exclude them. Political blocs are editorial groupings. Model estimates are retrospective, not win probabilities."},"servers":[{"url":"https://voteisrael.co.il/api/v1"}],"security":[],"paths":{"/":{"get":{"operationId":"getManifest","summary":"API endpoints and documentation","parameters":[],"responses":{"200":{"description":"Public snapshot. Read meta.source_updated_at and meta.verified_at; 2026 seats may be provisional.","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Version":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/Meta"},"data":{"type":"object"}},"required":["meta","data"]}}}},"304":{"description":"ETag matches; no response body."},"400":{"description":"Invalid query or ambiguous election.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No matching resource. Missing historical data is not a zero result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/summary":{"get":{"operationId":"getSummary","summary":"Compact national result and polling summary","parameters":[],"responses":{"200":{"description":"Public snapshot. Read meta.source_updated_at and meta.verified_at; 2026 seats may be provisional.","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Version":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/Meta"},"data":{"type":"object","properties":{"election":{"$ref":"#/components/schemas/ElectionHeader"},"blocs":{"type":"object"},"polling":{"type":"object"}}}},"required":["meta","data"]}}}},"304":{"description":"ETag matches; no response body."},"400":{"description":"Invalid query or ambiguous election.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No matching resource. Missing historical data is not a zero result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/elections":{"get":{"operationId":"listElections","summary":"List the eleven archived elections","parameters":[],"responses":{"200":{"description":"Public snapshot. Read meta.source_updated_at and meta.verified_at; 2026 seats may be provisional.","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Version":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/Meta"},"data":{"type":"object","properties":{"latest_id":{"type":"string"},"elections":{"type":"array","items":{"$ref":"#/components/schemas/ElectionHeader"}}},"required":["latest_id","elections"]}},"required":["meta","data"]}}}},"304":{"description":"ETag matches; no response body."},"400":{"description":"Invalid query or ambiguous election.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No matching resource. Missing historical data is not a zero result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/elections/{election_id}":{"get":{"operationId":"getElection","summary":"National votes, party seats and blocs","parameters":[{"name":"election_id","in":"path","required":true,"schema":{"type":"string"},"description":"latest, k26, another Knesset ID, or a full YYYY-MM-DD date. A bare 2019 is ambiguous."}],"responses":{"200":{"description":"Public snapshot. Read meta.source_updated_at and meta.verified_at; 2026 seats may be provisional.","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Version":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/Meta"},"data":{"$ref":"#/components/schemas/Election"}},"required":["meta","data"]}}}},"304":{"description":"ETag matches; no response body."},"400":{"description":"Invalid query or ambiguous election.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No matching resource. Missing historical data is not a zero result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/polls/{election_id}":{"get":{"operationId":"getPolls","summary":"Final-week average, model, exit polls and recent individual polls","parameters":[{"name":"election_id","in":"path","required":true,"schema":{"type":"string"},"description":"latest, k26, another Knesset ID, or a full YYYY-MM-DD date. A bare 2019 is ambiguous."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":25,"default":5},"description":"Maximum number of recent individual polls."},{"name":"include_series","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"Include the dated retrospective model series."}],"responses":{"200":{"description":"Public snapshot. Read meta.source_updated_at and meta.verified_at; 2026 seats may be provisional.","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Version":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/Meta"},"data":{"$ref":"#/components/schemas/Polls"}},"required":["meta","data"]}}}},"304":{"description":"ETag matches; no response body."},"400":{"description":"Invalid query or ambiguous election.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No matching resource. Missing historical data is not a zero result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/localities":{"get":{"operationId":"searchLocalities","summary":"Find a locality in Hebrew, Russian, English or Arabic","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":100,"default":""},"description":"Name, part of a name, or CBS code. Empty q returns a paginated list."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":10},"description":"Page size."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":10000,"default":0},"description":"Result offset."}],"responses":{"200":{"description":"Public snapshot. Read meta.source_updated_at and meta.verified_at; 2026 seats may be provisional.","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Version":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/Meta"},"data":{"type":"object","properties":{"query":{"type":"string"},"total":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"},"next_offset":{"type":["integer","null"]},"localities":{"type":"array","items":{"$ref":"#/components/schemas/Place"}}},"required":["query","total","limit","offset","next_offset","localities"]}},"required":["meta","data"]}}}},"304":{"description":"ETag matches; no response body."},"400":{"description":"Invalid query or ambiguous election.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No matching resource. Missing historical data is not a zero result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/localities/{code}":{"get":{"operationId":"getLocality","summary":"Votes and turnout for one locality and election","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":999999},"description":"CBS locality code, e.g. 5000 for Tel Aviv–Yafo."},{"name":"election_id","in":"query","required":false,"schema":{"type":"string","default":"latest"},"description":"Knesset ID or full election date."}],"responses":{"200":{"description":"Public snapshot. Read meta.source_updated_at and meta.verified_at; 2026 seats may be provisional.","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Version":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/Meta"},"data":{"$ref":"#/components/schemas/Locality"}},"required":["meta","data"]}}}},"304":{"description":"ETag matches; no response body."},"400":{"description":"Invalid query or ambiguous election.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No matching resource. Missing historical data is not a zero result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sources":{"get":{"operationId":"getSources","summary":"Source URLs, verification timestamps and file hashes","parameters":[],"responses":{"200":{"description":"Public snapshot. Read meta.source_updated_at and meta.verified_at; 2026 seats may be provisional.","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Version":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/Meta"},"data":{"type":"object"}},"required":["meta","data"]}}}},"304":{"description":"ETag matches; no response body."},"400":{"description":"Invalid query or ambiguous election.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No matching resource. Missing historical data is not a zero result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/openapi.json":{"get":{"operationId":"getOpenApi","summary":"OpenAPI 3.1 description","responses":{"200":{"description":"Public snapshot. Read meta.source_updated_at and meta.verified_at; 2026 seats may be provisional.","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Version":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"Meta":{"type":"object","properties":{"api_version":{"type":"string"},"data_version":{"type":"string","description":"Stable fingerprint of the input datasets."},"source_updated_at":{"type":"string","format":"date-time"},"verified_at":{"type":["string","null"],"format":"date-time"},"verification_matches_data":{"type":"boolean"},"polls_as_of":{"type":"string","format":"date"},"source":{"type":"string"},"documentation":{"type":"string"}},"required":["api_version","data_version","source_updated_at","verified_at","verification_matches_data","polls_as_of","source","documentation"]},"Names":{"type":"object","properties":{"he":{"type":["string","null"]},"ru":{"type":["string","null"]},"en":{"type":["string","null"]},"ar":{"type":["string","null"]}},"required":["he","ru","en","ar"]},"ElectionHeader":{"type":"object","properties":{"id":{"type":"string"},"knesset":{"type":"integer"},"date":{"type":"string","format":"date"},"status":{"enum":["official_seats","provisional_computed_seats"]},"valid_votes":{"type":"integer"},"turnout_pct":{"type":"number"},"seats_computed":{"type":"boolean"}},"required":["id","knesset","date","status","valid_votes","turnout_pct","seats_computed"]},"BlocTotals":{"type":"object","properties":{"votes":{"type":"integer"},"vote_share_pct":{"type":"number"},"seats":{"type":"integer"}},"required":["votes","vote_share_pct","seats"]},"BlocSeats":{"type":"object","properties":{"C":{"type":"number"},"O":{"type":"number"},"A":{"type":"number"},"X":{"type":"number"}},"required":["C","O","A","X"]},"Party":{"type":"object","properties":{"id":{"type":"string","description":"Ballot letters; unique within one election."},"family":{"type":"string","description":"Party lineage, not proof of unchanged composition."},"names":{"$ref":"#/components/schemas/Names"},"bloc":{"enum":["C","O","A","X"]},"votes":{"type":"integer"},"vote_share_pct":{"type":"number"},"seats":{"type":"integer"},"passed_threshold":{"type":"boolean"},"grouping_disputed":{"type":["string","null"]},"composition_changed_since_previous":{"type":"boolean"}},"required":["id","family","names","bloc","votes","vote_share_pct","seats","passed_threshold","grouping_disputed","composition_changed_since_previous"]},"Election":{"allOf":[{"$ref":"#/components/schemas/ElectionHeader"},{"type":"object","properties":{"registered_voters":{"type":"integer"},"voters":{"type":"integer"},"invalid_votes":{"type":"integer"},"threshold_pct":{"type":"number"},"double_envelope_votes":{"type":"integer"},"bloc_definitions":{"type":"object"},"blocs":{"type":"object","properties":{"C":{"$ref":"#/components/schemas/BlocTotals"},"O":{"$ref":"#/components/schemas/BlocTotals"},"A":{"$ref":"#/components/schemas/BlocTotals"},"X":{"$ref":"#/components/schemas/BlocTotals"}},"required":["C","O","A","X"]},"parties":{"type":"array","items":{"$ref":"#/components/schemas/Party"}},"unlisted_votes":{"type":"integer"},"caveats":{"type":"array","items":{"type":"string"}},"source_urls":{"type":"array","items":{"type":"string"}},"web_url":{"type":"string"}},"required":["registered_voters","voters","invalid_votes","threshold_pct","double_envelope_votes","bloc_definitions","blocs","parties","unlisted_votes","caveats","source_urls","web_url"]}]},"PollEstimate":{"type":["object","null"],"properties":{"bloc_seats":{"$ref":"#/components/schemas/BlocSeats"},"party_seats":{"type":"object","additionalProperties":{"type":"number"}},"netanyahu_or_right_camp_error_seats":{"type":"number"},"misplaced_seats":{"type":"number"}}},"Polls":{"type":"object","properties":{"election":{"$ref":"#/components/schemas/ElectionHeader"},"bloc_definitions":{"type":"object"},"archived_poll_count":{"type":"integer"},"final_week_average":{"$ref":"#/components/schemas/PollEstimate"},"model":{"$ref":"#/components/schemas/PollEstimate"},"initial_exit_poll_average":{"$ref":"#/components/schemas/PollEstimate"},"initial_exit_polls":{"type":"array","items":{"type":"object"}},"result":{"type":"object"},"recent_polls":{"type":"array","items":{"type":"object"}},"caveats":{"type":"array","items":{"type":"string"}},"source_url":{"type":"string"}},"required":["election","bloc_definitions","archived_poll_count","final_week_average","model","initial_exit_poll_average","initial_exit_polls","result","recent_polls","caveats","source_url"]},"Place":{"type":"object","properties":{"code":{"type":"integer"},"names":{"$ref":"#/components/schemas/Names"},"population":{"type":["number","null"]},"district":{"type":["string","null"]}},"required":["code","names","population","district"]},"Locality":{"type":"object","properties":{"locality":{"type":"object","properties":{"code":{"type":"integer"},"names":{"$ref":"#/components/schemas/Names"}},"required":["code","names"]},"election":{"$ref":"#/components/schemas/ElectionHeader"},"reporting_unit":{"type":"object","properties":{"code":{"type":"integer"},"names":{"$ref":"#/components/schemas/Names"}},"required":["code","names"]},"is_combined_reporting_unit":{"type":"boolean"},"alias_note":{"type":["string","null"]},"registered_voters":{"type":["number","null"]},"voters":{"type":"integer"},"valid_votes":{"type":"integer"},"invalid_votes":{"type":"integer"},"turnout_pct":{"type":["number","null"]},"turnout_over_100":{"type":"boolean"},"ballot_boxes":{"type":["number","null"]},"parties":{"type":"array","items":{"type":"object"}},"unlisted_votes":{"type":"integer"},"bloc_definitions":{"type":"object"},"blocs":{"type":"object"},"caveats":{"type":"array","items":{"type":"string"}},"source_url":{"type":"string"},"web_url":{"type":"string"}},"required":["locality","election","reporting_unit","is_combined_reporting_unit","alias_note","registered_voters","voters","valid_votes","invalid_votes","turnout_pct","turnout_over_100","ballot_boxes","parties","unlisted_votes","bloc_definitions","blocs","caveats","source_url","web_url"]},"Error":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/Meta"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]}},"required":["meta","error"]}}}}