AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Israeli Election Data

skill-skills-il-government-services-israeli-election-data · by skills-il

Access Israeli election and political data from the Knesset OData v4 API and the Central Elections Committee (data.gov.il). Use when user asks about Knesset, Israeli elections, MK (Member of Knesset) information, Israeli voting records (per-MK plenum votes via KNS_PlenumVote/KNS_PlenumVoteResult), legislative bills in Israel, Knesset committees, Israeli political parties, coalition data, or elect…

No reviews yet
0 installs
148 views
0.0% view→install

Install

$ agentstack add skill-skills-il-government-services-israeli-election-data

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-skills-il-government-services-israeli-election-data)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Israeli Election Data? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Israeli Election Data

Instructions

Step 1: Identify Data Need

| Data Type | Source | Endpoint / Dataset | |-----------|--------|--------------------| | MK information | Knesset OData v4 | KNS_Person, KNS_PersonToPosition, KNS_MkSiteCode | | Plenum votes (per-MK detail) | Knesset OData v4 | KNS_PlenumVote, KNS_PlenumVoteResult | | Bills / legislation | Knesset OData v4 | KNS_Bill, KNS_BillInitiator, KNS_BillName | | Israeli law corpus (enacted) | Knesset OData v4 | KNS_IsraelLaw, KNS_IsraelLawName, KNS_SecondaryLaw | | Committee sessions | Knesset OData v4 | KNS_Committee, KNS_CommitteeSession, KNS_CmtSessionItem | | Plenum sessions | Knesset OData v4 | KNS_PlenumSession, KNS_PlmSessionItem | | Parliamentary questions (שאילתות) | Knesset OData v4 | KNS_Query | | Agenda proposals (הצעות לסדר-היום) | Knesset OData v4 | KNS_Agenda | | Knesset session dates | Knesset OData v4 | KNS_KnessetDates | | Party information | Knesset OData v4 | KNS_Faction | | Election results (per locality / per ballot) | data.gov.il (Central Elections Committee) | dataset votes-knesset (CSVs for Knessets 16-25) | | Party platforms / candidate lists | Central Elections Committee | bechirot.gov.il |

Step 2: Query the Knesset OData v4 API

Base URL: https://knesset.gov.il/OdataV4/ParliamentInfo/

OData v4. The root URL returns the entity list. As of May 2026 the service exposes all KNS_-prefixed entities listed in Step 1 plus the document and lookup tables documented in references/knesset-api-entities.md.

Legacy v3 fallback: the older endpoint at https://knesset.gov.il/Odata/ParliamentInfo.svc/ is still live. Code written against it keeps working, but v4 is the current API and exposes vote tables (KNS_PlenumVote, KNS_PlenumVoteResult) that v3 does not. New work should target v4.

Query pattern (v4):

GET {BASE_URL}/{ENTITY}?$filter={FILTER}&$top={LIMIT}&$select={FIELDS}&$orderby={FIELD}

v4 returns JSON by default; $format=json is no longer required. Include $count=true to get the total record count alongside the page; pair with $top=0 to get a count-only response. For large result sets (any per-MK vote query, multi-Knesset historical pulls), the v4 server returns @odata.nextLink when more pages exist; loop on nextLink until it's absent. Default page size varies by entity, so do not rely on a single $top=N to return everything.

Get all MKs in the 25th Knesset (sworn in 2022-11-15):

GET .../KNS_PersonToPosition?$filter=KnessetNum eq 25 and (PositionID eq 43 or PositionID eq 61)&$top=120

PositionID 43 = male MK (חבר הכנסת), 61 = female MK (חברת הכנסת). PositionID 54 is a separate "faction member" designation, see Gotchas. Full lexicon in references/knesset-api-entities.md.

Search MK by name (Hebrew or English), v4 uses contains, not v3's substringof:

GET .../KNS_Person?$filter=contains(LastName,'נתניהו') or contains(FirstName,'נתניהו')&$top=10

Get factions in a Knesset:

GET .../KNS_Faction?$filter=KnessetNum eq 25

Step 3: Per-MK Plenum Votes (v4)

The two entities to know:

| Entity | Role | |--------|------| | KNS_PlenumVote | One row per vote: title, time, session, method, status, for/against descriptions, no-confidence flag | | KNS_PlenumVoteResult | One row per MK per vote: MkId, VoteID, ResultDesc ("בעד" / "נגד" / "נמנע"), LastName, FirstName |

Find a vote, then the per-MK results:

  1. Find the vote by topic:
GET .../KNS_PlenumVote?$filter=contains(VoteTitle,'תקציב')&$orderby=VoteDateTime desc&$top=5

Field is VoteTitle, NOT ItemTitle (which does not exist on this entity, see Gotchas).

  1. Pull per-MK results for that vote (paginate, do not assume 120 rows):
GET .../KNS_PlenumVoteResult?$filter=VoteID eq {id}&$top=200&$count=true

Absent MKs are not in the response. KNS_PlenumVoteResult only contains MKs who registered a vote (for / against / abstain). A missing MK row does NOT mean "voted no", it means "did not vote / not present". For attendance analysis, compare the returned MkId set against the active-MK list from KNS_PersonToPosition for that Knesset.

  1. Filter to a specific MK by name (safest path, names are bundled in every result row):
GET .../KNS_PlenumVoteResult?$filter=VoteID eq {id} and contains(LastName,'גפני')

Or by MkId if you already have it from a prior KNS_PlenumVoteResult row:

GET .../KNS_PlenumVoteResult?$filter=VoteID eq {id} and MkId eq {mkId}

MkId is a distinct identifier space from KNS_Person.Id. Treat MkId as opaque, harvest it from KNS_PlenumVoteResult rows themselves (each row also carries FirstName / LastName), rather than assuming KNS_Person.Id equals MkId. If you only have a person from KNS_Person, find their MkId via a name match on a recent KNS_PlenumVoteResult query and cache it for the session.

Field is MkId, NOT PersonID. Read ResultDesc ("בעד" / "נגד" / "נמנע") for the outcome; ResultCode integer values do not follow a simple 1/2/3 mapping (the live value for "בעד" on row 1 is 7), always use ResultDesc.

For aggregate "did the bill pass" status without per-MK detail, query KNS_Bill.StatusID (Step 4).

Historical / archival vote data before public v4 access: the hasadna/knesset-data community ETL at https://github.com/hasadna/knesset-data still mirrors Knesset internal databases to CSV/parquet, useful for academic analysis and bulk back-fills.

Step 4: Track Legislation

Search bills by keyword (v4 contains syntax):

GET .../KNS_Bill?$filter=KnessetNum eq 25 and contains(Name,'דיור')&$orderby=PublicationDate desc&$top=50

Bill status codes (key values):

  • 108 = Preparation for first reading
  • 118 = Approved in third reading (became law)
  • 125 = Rejected

For the full list: KNS_Status?$filter=TypeID eq 5.

Bill initiators, documents, related committee items:

GET .../KNS_BillInitiator?$filter=BillID eq {id}&$expand=KNS_Person($orderby=LastName)
GET .../KNS_DocumentBill?$filter=BillID eq {id}

The BillID column in these related tables points back to KNS_Bill.Id. In v4 the primary key on every KNS_* entity is uniformly named Id; older "BillID / PersonID / CommitteeID" names persist only as foreign-key columns in related tables.

Legislative process stages:

  1. Bill draft (private member or government bill)
  2. Preliminary reading (private bills only, plenum vote)
  3. Committee review (assigned to the relevant committee)
  4. First reading (plenum vote on bill principles)
  5. Committee preparation (clause-by-clause review)
  6. Second reading (clause-by-clause plenum vote)
  7. Third reading (final vote on the entire bill)
  8. Publication in Reshumot (official gazette), the bill becomes law

Step 5: Election Results (per Locality / per Ballot)

The Central Elections Committee publishes results on data.gov.il under the dataset votes-knesset:

  • Catalog page: https://data.gov.il/dataset/votes-knesset
  • CKAN API: https://data.gov.il/api/3/action/package_show?id=votes-knesset

Each Knesset election (16th through 25th) has two CSV files:

  • By locality (לפי יישובים), aggregated turnout and vote counts per city/town.
  • By ballot box (לפי קלפיות), raw per-ballot results, granular enough for analysis at individual-station resolution.

Example URL for 25th Knesset by locality:

https://e.data.gov.il/dataset/26f9fa06-fcd7-4173-8df5-65797b63e857/resource/b392b8ee-ba45-4ea0-bfed-f03a1a36e99c/download/-25-.csv

Find the latest resource IDs via the CKAN API call above.

Note on votes.gov.il: older documentation cites votes.gov.il as the results site. That hostname no longer resolves; the canonical site is now https://www.bechirot.gov.il/ (Central Elections Committee, may be in maintenance between election cycles) and the canonical data is on data.gov.il.

Step 6: Electoral System Facts

  • Knesset size: 120 seats (unchanged since 1949).
  • System: Single national-list proportional representation, no districts.
  • Electoral threshold: 3.25% of valid votes since the March 2014 amendment to the Knesset Elections Law (חוק הבחירות לכנסת). Was 2% before that.
  • Seat allocation: Modified D'Hondt, named Bader-Ofer in Israel (after MKs Yohanan Bader and Avraham Ofer). Internationally equivalent to the Hagenbach-Bischoff method. Two-phase allocation: (1) integer share of valid votes among parties that crossed the threshold, (2) "leftover seats" via D'Hondt highest-averages.
  • Surplus-vote agreements (heskemei odafim): Two parties may sign a pre-election pact to be treated as one bloc for the leftover-seat round only.
  • Election schedule: No fixed cycle. Knesset term is up to 4 years but can be dissolved earlier. The next election (26th Knesset) must be held no later than 27 October 2026 under current legislation.

Step 7: 2022 Election Results (25th Knesset)

Canonical seat counts for the November 1, 2022 election:

| Faction (Hebrew) | Faction (English) | Seats | Bloc | |------------------|-------------------|-------|------| | הליכוד | Likud | 32 | Coalition | | יש עתיד | Yesh Atid | 24 | Opposition | | הציונות הדתית | Religious Zionism-Otzma Yehudit | 14 | Coalition | | המחנה הממלכתי | National Unity | 12 | Opposition | | ש"ס | Shas | 11 | Coalition | | יהדות התורה | United Torah Judaism (UTJ) | 7 | Coalition | | ישראל ביתנו | Yisrael Beiteinu | 6 | Opposition | | רע"מ | Ra'am (United Arab List) | 5 | Opposition | | חד"ש-תע"ל | Hadash-Ta'al | 5 | Opposition | | העבודה | Labor | 4 | Opposition |

Total coalition: 64, opposition: 56. Below-threshold parties: Meretz (3.16%) and Balad (2.91%), both received 0 seats. The 25th Knesset was sworn in on November 15, 2022.

Step 8: Municipal Elections

Municipal elections (bechirot reshuyot mekomiyot) are normally held every five years. Most recent cycle:

  • 27 February 2024, 242 localities. Runoff round 10 March 2024 in 35 localities where no candidate cleared 40%.
  • November 2024, separate round for 11 northern and southern localities that were evacuated due to the Gaza/Lebanon wars and could not vote in February.
  • Turnout was a historic low of approximately 49.5%.

Municipal results live on https://www.bechirot.gov.il/local2024/Pages/default.aspx and were eventually mirrored to data.gov.il. Each city publishes its own breakdown via the Ministry of Interior (https://www.gov.il/he/departments/ministry_of_interior).

Step 9: Coalition, Government, and Auxiliary Data

| Topic | Source | |-------|--------| | Coalition agreements (full text, Hebrew) | https://www.gov.il/he/Departments/policies and PMO publications | | Government composition (current ministers) | KNS_PersonToPosition filtered to PositionID eq 39 (male) / 57 (female) / 45 (PM) | | Knesset committee composition | KNS_PersonToPosition filtered to PositionID eq 41 (chair) / 42 (member) | | Faction membership (separate from MK role) | KNS_PersonToPosition filtered to PositionID eq 54 (see Gotchas) | | Knesset speaker | PositionID eq 122 (male) / 123 (female) | | Party financing reports | State Comptroller (mevaker hamedina): https://www.mevaker.gov.il/ | | Voter eligibility / registration check | Ministry of Interior: https://www.gov.il/he/service/check_voter_registration | | Population context (per-locality demographics) | Central Bureau of Statistics: https://www.cbs.gov.il/ |

Israeli Political Terminology

| Hebrew | English | Meaning | |--------|---------|---------| | כנסת | Knesset | Parliament | | חבר/ת כנסת | MK | Member of Knesset | | סיעה | Faction | Political party/bloc inside the Knesset | | מפלגה | Party | Registered political party (separate from סיעה) | | קואליציה | Coalition | Governing alliance | | אופוזיציה | Opposition | Non-governing parties | | הצעת חוק | Bill | Legislative proposal | | חוק יסוד | Basic Law | Quasi-constitutional law | | ועדה | Committee | Knesset committee | | מליאה | Plenum | Full Knesset session | | הצבעה | Vote | Parliamentary vote | | אחוז חסימה | Electoral threshold | Minimum vote share for representation (3.25%) | | הסכם עודפים | Surplus-vote agreement | Pre-election pact between two parties for leftover-seat allocation | | בדר-עופר | Bader-Ofer | The Israeli D'Hondt seat-allocation formula | | קלפי | Kalpi | Ballot box / polling station | | רשומות | Reshumot | Official gazette where laws are published | | ועדת הבחירות המרכזית | Central Elections Committee | National election authority |

Examples

Example 1: MK Lookup

User says: "Tell me about MK Karine Elharrar." Actions:

  1. Search KNS_Person?$filter=contains(LastName,'אלהרר') to find the person's Id.
  2. Query KNS_PersonToPosition?$filter=PersonID eq {id} to enumerate her current and historical roles (MK terms, ministerial positions).
  3. Use KNS_Faction to resolve FactionID to faction name per Knesset.
  4. Present MK profile with party affiliation and ministerial history. For her actual votes on plenum motions, query KNS_PlenumVoteResult?$filter=MkId eq {id} (see Example 5).

Example 2: Bill Tracking

User says: "What happened to the bill on the haredi draft?" Actions:

  1. Search KNS_Bill?$filter=KnessetNum eq 25 and contains(Name,'גיוס').
  2. Read each bill's Id, StatusID, SubTypeID.
  3. Find sponsors: KNS_BillInitiator?$filter=BillID eq {id}&$expand=KNS_Person.
  4. Look up status text via KNS_Status.
  5. Pull related committee sessions via KNS_CmtSessionItem?$filter=ItemID eq {bill.Id}.
  6. Present bill status, sponsor list, committee assignment, and current reading.

Example 3: Election Analysis by Locality

User says: "Show me the 25th Knesset results for Haifa." Actions:

  1. Resolve the latest votes-knesset per-locality CSV via the CKAN API: GET data.gov.il/api/3/action/package_show?id=votes-knesset, pick the resource named תוצאות האמת של הבחירות לכנסת ה-25 לפי ייישובים.
  2. Download the CSV (-25-.csv).
  3. Filter by locality code or Hebrew name (חיפה).
  4. Aggregate by faction column.
  5. Compare to national results from Step 7.

Example 4: Coalition Composition

User says: "Which factions are in the current coalition?" Actions:

  1. Query KNS_Faction?$filter=KnessetNum eq 25 to list all factions.
  2. Match against the canonical Step 7 table (Likud, Religious Zionism, Shas, UTJ are coalition).
  3. Note that coalition composition can shift mid-term, always confirm against current Knesset/Government news.

Example 5: Per-MK Vote Lookup (v4 only)

User says: "Did MK Gafni vote in favor of the budget?" Actions:

  1. Find the budget vote: KNS_PlenumVote?$filter=contains(VoteTitle,'תקציב')&$orderby=VoteDateTime desc&$top=10, pick the relevant Id.
  2. Filter KNS_PlenumVoteResult by VoteID + last name (the row already carries FirstName / LastName, no need to resolve through KNS_Person): KNS_PlenumVoteResult?$filter=VoteID eq {voteId} and contains(LastName,'גפני').
  3. If the result set is empty, that means MK Gafni did not register a vote (absent / abstained-by-absence), NOT "voted no". Report the absence honestly.
  4. If results exist, read ResultDesc ("בעד" / "נגד" / "נמנע") and present alongside VoteTitle and VoteDateTime. Note: do NOT derive MkId from KNS_Person.Id, those are different ID spaces; the name match on the result row is the reliable path.

Bundled Resources

Scripts

  • scripts/query_knesset.py, Query the Knesset OData v4 API. Subcommands: mks (list MKs by Knesset), search-mk (by name), bills (search by keyword), votes (find votes by topic, optionally per-MK results), factions (list factions), entities (list available OData entities), positions (list position-ID lexicon). Run: python scripts/query_knesset.py --help.

References

  • references/knesset-api-entities.md, Entity reference for the Knesset OData v4 API: field names, OData v4 filter syntax (contains, `i

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.