| name | fiber-availability-check |
| description | Check whether fiber-optic internet is deployed at an Israeli street address, across multiple providers (Bezeq Bfiber and HOT Fiber today). Use when the user asks "is there fiber at my address", "can I get Bfiber", "does HOT fiber reach [street]", "fiber availability in [city]", "are there sivim opti'im [ืกืืืื ืืืคืืืื] at this address", or is comparing ISP coverage before ordering. Supports a reference test address (ืื ืืืืื 1, ืืจืืฉืืื) and reads defaults from a local preferences file so the user can check their own address with no arguments. |
Israel Fiber Availability Check
Multi-provider address-level fiber availability lookup for Israel. Plain-HTTP (no browser), device-agnostic.
Providers
| Provider | Status | Method |
|---|
| Bezeq (Bfiber) | Supported | Public JSON API on bezeq.co.il |
| HOT (HOT Fiber) | Supported | Public JSON API on hot.net.il |
| Partner | Not supported | No public address check โ their form is lead-capture only (name + phone). |
| Cellcom | Not supported | React SPA behind Imperva/Incapsula; would need headless-browser escalation. |
| IBC / Unlimited | Not supported | Brand sites parked / offline at time of authoring. |
Call with --show-unsupported to include these notes in the output.
Reference test address
Use city=ืืจืืฉืืื, street=ืื ืืืืื, house=1 to smoke-test the pipeline. As of authoring, Bezeq reports available and HOT reports unavailable at this address โ a healthy signal that both backends are reachable and the normalizer is working.
Local preferences (user details never in the repo)
User-specific defaults live outside the plugin repo. Two options, in precedence order (last wins):
- YAML (recommended) โ
~/.config/israel-agent-skills/preferences.yaml:
default_city: ืืจืืฉืืื
default_street: ืื ืืืืื
default_house: "1"
default_entrance: ""
phone: "+9725xxxxxxxx"
email: "you@example.com"
- .env-style โ
~/.config/israel-agent-skills/fiber.env:
IL_FIBER_CITY=ืืจืืฉืืื
IL_FIBER_STREET=ืื ืืืืื
IL_FIBER_HOUSE=1
IL_FIBER_PHONE=+9725xxxxxxxx
IL_FIBER_EMAIL=you@example.com
- Process env vars of the same names (highest precedence, overrides files).
With any of these set, the user can run the skill with zero arguments and get a check for their own address. CLI flags always win over preferences.
Permissions: the prefs directory is user-scoped. If you ever add secrets (API tokens), put them under ~/.config/israel-agent-skills/secrets/ with chmod 600 and do not co-mingle with the plain preferences file.
Usage
python3 scripts/check_fiber.py --city "ืืจืืฉืืื" --street "ืื ืืืืื" --house 1
python3 scripts/check_fiber.py
python3 scripts/check_fiber.py --provider bezeq
python3 scripts/check_fiber.py --provider hot
python3 scripts/check_fiber.py --show-unsupported
echo '{"city":"ืืจืืฉืืื","street":"ืื ืืืืื","house":1,"providers":["bezeq","hot"]}' \
| python3 scripts/check_fiber.py --stdin
Output schema
{
"query": {"city": "...", "street": "...", "house": "1", "entrance": ""},
"results": {
"bezeq": {
"provider": "bezeq",
"status": "available | coming_soon | unavailable | address_not_found | unknown | error",
"status_code": 1,
"summary": "human-readable one-liner",
"error": null,
"raw": { ... provider response ... }
},
"hot": { ... same shape ... }
},
"unsupported": {},
"fetched_at": "2026-04-23T21:06:22+03:00",
"test_address_note": "..."
}
Statuses are normalized across providers so callers can compare coverage without provider-specific glue.
Notes
- No secrets required. Both supported endpoints are public.
- City and street names should be in Hebrew for best matching. Both Bezeq and HOT share the same
cityId=3000 for Jerusalem, which is why the same preference file works across providers.
- If a future provider requires a phone/email for a lead-style submit step, the prefs file already has those slots โ the skill will pick them up without a code change to the CLI surface.
- If either provider's response shape changes (e.g. another layer of JSON wrapping, new status code), failures show as
status: "error" with the exception string so it's obvious what broke.