# Airtel IP

> airtel.lv | Data APIs; 1 record: free tier, limits, identity cost and evidence.

HTML https://fshy.ajam.dev/p/airtel/ | JSON https://fshy.ajam.dev/api/v1/entity/airtel.json | how to read a record: https://fshy.ajam.dev/llms-full.txt

## Airtel IP

- `data-apis/airtel-ip` | qualifies-with-caveat | evidence measured | binding none | category IP geolocation API | tier Free keyless
- needs card no, phone no, ID no, institution no | verified 2026-11-02T00:23:42.887Z (live) | stale on 2027-01-02
- url https://sys.airtel.lv/ip2country/1.1.1.1/?full=true
- free tier: keyless GET /ip2country/{IP} returns a country code as plain text and, with ?full=true, a JSON object with country, city, coordinates, ASN and per-field reliability scores; the listed host sys.airtel.lv now answers an error that names https://aether.epias.ltd/ip2country/{IP}, where 8.8.8.8 answered HTTP 200 with no key | unit: requests | metered on: unstated | read on: 2026-11-02 | source: [1] | note: unverified: no quota, rate limit or documentation page is published; no rate-limit header was returned.
- per-object cap: one IP address per request, in the URL path | source: [1]
- retention: not stated | source: [1]
- egress: not applicable: plain text and JSON answers, not metered in bytes | metered: no | source: [1]
- identity: anonymous | detail: no key or header: a plain GET of the new host answered HTTP 200
- interface: rest
- limits:
  - request-rate: unverified: no rate limit or quota is published [1]
- binding note: no limit is published, so none could be named.
- interface detail: GET https://aether.epias.ltd/ip2country/{IP} answers the country code as plain text and ?full=true answers JSON; the former host sys.airtel.lv answers a Cloudflare managed challenge (HTTP 403) to a plain HTTP client
- endpoint: part of the free tier
- tooling: curl or any HTTP client against the aether.epias.ltd host
- composes with: Keyless country, city, coordinates and ASN with a reliability score for each field; one IP per call. Bulk path: none.
- reliability: sys.airtel.lv answers HTTP 403 (a Cloudflare managed challenge) to a plain HTTP client, and a client that passes the challenge receives an error JSON that names the new host; every other path of aether.epias.ltd answered HTTP 500 and no documentation exists
- notes: Free requests: no quota stated. Rate limit: not stated. Bulk path: none. The listed host moved to aether.epias.ltd.
- evidence note: Two lookups at the new host were probed on 2026-11-02, a fetch from a second network returned the same JSON, and the old host was read with a client that passes the challenge; no first-party documentation exists, so quota, rate and terms are unverified.
- extras:
  - bulk_path: none
  - free_requests: no quota stated
- evidence:
  - [1] 2026-11-02: the listed host answers an error that names the new host | capture: sha256:3ca12f358b098508f6bc726fd58a2d52e1b1e2d0415c79b13943291cf827bb36 | quote: {"error":"use https:\/\/aether.epias.ltd\/ip2country\/{IP}"}
  - probe:https://sys.airtel.lv/ip2country/1.1.1.1/?full=true 2026-11-02: a plain GET of the listed host answered HTTP 403 | capture: sha256:719992c83dab4672646203d6953a0dd44dc64966b7e494ce58d0563fe221b459 | quote: "status": 403
  - probe:https://sys.airtel.lv/ip2country/1.1.1.1/?full=true 2026-11-02: the 403 is a Cloudflare managed challenge | capture: sha256:719992c83dab4672646203d6953a0dd44dc64966b7e494ce58d0563fe221b459 | quote: "signature": "cloudflare-challenge:title:just a moment..."
  - probe:https://aether.epias.ltd/ip2country/8.8.8.8?full=true 2026-11-02: a keyless GET of the new host with full=true answered HTTP 200 | capture: sha256:7550b2626adec9a31374d05c780bd03ae2e9a052e666001ccf89c2216cda3bb4 | quote: "status": 200
  - probe:https://aether.epias.ltd/ip2country/8.8.8.8?full=true 2026-11-02: the full answer carries a country code | capture: sha256:0575165f88dbbbf8a82036691919d5136bf1bafd82e23ded9d71948a611bc34e | quote: "country": "US",
  - probe:https://aether.epias.ltd/ip2country/8.8.8.8?full=true 2026-11-02: the full answer carries an ASN | capture: sha256:0575165f88dbbbf8a82036691919d5136bf1bafd82e23ded9d71948a611bc34e | quote: "asn": "AS15169",
  - probe:https://aether.epias.ltd/ip2country/8.8.8.8?full=true 2026-11-02: the full answer carries per-field reliability scores | capture: sha256:0575165f88dbbbf8a82036691919d5136bf1bafd82e23ded9d71948a611bc34e | quote: "reliability": {
  - probe:https://aether.epias.ltd/ip2country/8.8.8.8 2026-11-02: the plain lookup answers a two-byte country code | capture: sha256:2f6b18142b5f548bc22fd6a1aaba506f8d4df2e1e6de121cc08bf4afcf08474b | quote: "bytes": 2,
  - [2] 2026-11-02: a fetch of the new host from a second network answered HTTP 200 | capture: sha256:0f60d199a9667887aac109306a943775b0475f80b22455f6051aad44152eecef | quote: HTTP/1.1 200 OK
  - [2] 2026-11-02: the second route reads the same full JSON answer | capture: sha256:0f60d199a9667887aac109306a943775b0475f80b22455f6051aad44152eecef | quote: "asn": "AS15169",
  - probe:https://aether.epias.ltd/docs 2026-11-02: a path other than /ip2country/{IP} answers HTTP 500 | capture: sha256:69dda2ed93d0647937272e0dc5e7595557646d45923221be23ac3b9fc046576b | quote: "status": 500
- sources:
  - [1] https://sys.airtel.lv/ip2country/1.1.1.1/?full=true
  - [2] https://aether.epias.ltd/ip2country/8.8.8.8?full=true
