Public API
Free and read-only. No key, no sign-up, CORS open to every origin. Responses are cached at the edge for an hour. Base URL: https://arnona-israel.vercel.app
Examples
- All rates for a city, newest year
GET /api/v1/tariffs?city=tel-aviv&year=latest - By Hebrew or English name
GET /api/v1/tariffs?city=Jerusalem&category=office - Several cities, one use, one year
GET /api/v1/tariffs?city=jerusalem,ראשון לציון&category=residential&year=2026 - Text search inside the classification
GET /api/v1/tariffs?q=בנקים&year=2026 - Everything as CSV (Excel-ready, UTF-8 BOM)
GET /api/v1/tariffs?format=csv&include_flagged=true - Authorities that have rates
GET /api/v1/cities - The full CBS registry (all 259 authorities)
GET /api/v1/cities?all=true - One authority + its latest rate book
GET /api/v1/cities/petah-tikva - Coverage, years, sync time
GET /api/v1/meta - OpenAPI 3 spec
GET /api/v1/openapi.json
GET /api/v1/tariffs
| Parameter | Meaning |
|---|---|
city | City key (tel-aviv, cbs-3000), Hebrew or English name. Comma-separate for several. |
year | A year, comma-separated years, or latest (newest year available per city). Default: all years. |
category | Use category key(s), comma-separated — see below. |
zone | Exact tax zone as printed (א, 1, …). Rows with no zone apply city-wide. |
q | Substring search in classification label, code, notes and building type. |
include_flagged | true to include rows that failed an automatic sanity check (needs_review). Default false. |
format | json (default) or csv. |
limit / offset | Paging for JSON. Default 1000, max 10000. Follow next_offset. |
Row fields
{
"city_key": "tel-aviv",
"city_name": "תל אביב-יפו",
"city_name_en": "Tel Aviv - Yafo",
"year": 2026,
"category_key": "office", // normalised use, see below
"category_label": "משרדים, שירותים ומסחר", // classification exactly as printed
"code": "301", // סמל, when printed
"zone": "1", // null = all zones
"building_type": null, // סוג בנין (e.g. Tel Aviv's construction-era classes)
"size_from": null, "size_to": null, // m² band; null = open-ended
"rate_per_sqm": 449.78, // ₪ per m² per YEAR, as printed
"rate_per_sqm_monthly": 37.48, // convenience: annual ÷ 12
"notes": null,
"source_url": "https://…/צו הארנונה לשנת 2026.pdf",
"confidence": "high",
"needs_review": false,
"review_reason": null,
"updated_at": "2026-08-04T10:15:45Z"
}Use categories
residential | Residential · מגורים |
office | Offices · משרדים |
commerce | Commerce · מסחר |
industry | Industry · תעשייה |
workshop | Workshops · מלאכה |
storage | Storage · אחסנה |
parking | Parking · חניה |
hotel | Hotels · מלונאות |
land | Land · קרקע |
farm | Agriculture · חקלאות |
public | Public · ציבורי |
other | Other · אחר |
How to compute a bill
Annual Arnona = area (m²) × rate_per_sqm of the row matching the property's use, zone, building class and size band. Many cities apply size bands to the whole area (not marginally) — read the order's wording in notes and at source_url. Discounts (הנחות) are personal and not included.
Data & licence
Rates are extracted automatically from each local authority's official annual order (צו ארנונה) and validated deterministically (year, core sections, sanity bands, year-over-year movement). The order linked in source_url is always the legal source. Code is MIT; the dataset is CC BY 4.0. The raw JSON lives in the data/ folder on GitHub, together with the open-source scraper that produces it.