OpenIPApi

API-dokumentáció

Minden, amire szüksége van az OpenIPApi alkalmazásba integrálásához. Alap URL: https://api.openipapi.com (verziózva /v1 alatt).

Jelek, nem ítéletek. Az IP-intelligencia valószínűségi alapú. A threat_score és a VPN/proxy/Tor jelzők a döntési logika bemenetei. Kombinálja őket fiók-, fizetési, eszköz- és viselkedési jelekkel — soha ne használja őket egyedüli alapként a blokkoláshoz. Részletekért lásd az Adatmódszertan oldalt.

Hitelesítés

Minden API-kérésnek tartalmaznia kell az API-kulcsot a X-API-Key fejlécben. Az API-kulcsát a konzolon.

X-API-Key: oip_your_api_key_here
Tartsa titokban az API-kulcsát. Soha ne tegye közzé kliensoldali JavaScript-ben vagy nyilvános tárhelyeken.

Alap URL

Minden API-kérés a következő alap URL-re irányul HTTPS-en keresztül:

https://api.openipapi.com

Géppel olvasható specifikáció (OpenAPI 3.1): /openapi.yaml.

Válaszformátum

Minden válasz JSON formátumú. A sikeres válaszok HTTP 200. státuszkódot adnak vissza. A hibaválaszok megfelelő 4xx vagy 5xx státuszkóddal és error mezővel térnek vissza.

{
  "error": "invalid_api_key",
  "message": "The provided API key is invalid or has been revoked.",
  "status": 401
}

GET /v1/lookup/{ip}

Egyetlen IP-cím geolokációs, hálózati és fenyegetési adatainak lekérdezése.

GET https://api.openipapi.com/v1/lookup/{ip}

Paraméterek

Paraméter Típus Leírás
ip path A lekérdezni kívánt IPv4 vagy IPv6 cím.
fields query (optional) Vesszővel elválasztott lista a visszaadandó legfelső szintű mezőkről: geo,network,threat,abuse.
date query (optional) Történeti lekérdezés — az adott dátumra vonatkozó pillanatfelvétel visszaadása ehhez az IP-hez (YYYY-MM-DD). Legfeljebb 365 napra visszamenőleg. Szükséges hozzá a Pro+. Hibát ad vissza: no_snapshot ha az adott dátumra nincs elérhető adat.

Válaszmezők

Mező Leírás Csomag
ip The queried IP address. All
type IPv4 or IPv6. All
geo.country_code 2-letter ISO 3166-1 country code. All
geo.country Full country name. All
geo.region Region / state name. All
geo.region_code Region / state code. All
geo.city City name. All
geo.postal_code Postal / ZIP code. All
geo.latitude Latitude (decimal degrees). All
geo.longitude Longitude (decimal degrees). All
geo.timezone IANA timezone identifier (e.g. Europe/Berlin). All
geo.is_sanctioned True if the country is on OFAC, EU, or UN sanction lists. All
geo.sanction_lists Array of applicable sanction programs, e.g. ["OFAC","EU"]. All
network.asn Autonomous System Number. Starter+
network.as_name AS organisation name. Starter+
network.as_domain AS organisation domain. Starter+
network.isp Internet Service Provider name. All
network.organization Network organisation name. All
network.connection_type residential, datacenter, mobile, education, or government. All
threat.is_vpn True if the IP is a known VPN endpoint. Pro+
threat.is_proxy True if the IP is a known open proxy. Pro+
threat.is_tor True if the IP is a Tor exit node. Pro+
threat.is_relay True if the IP is an anonymous relay. Pro+
threat.is_hosting True if the IP belongs to a hosting provider. Pro+
threat.threat_score Composite risk score 0–100. A signal, not a final verdict — combine with account, payment, device and behavior data. Pro+
threat.threat_categories Array of threat category strings. Pro+
threat.bot_type Verified bot identifier (e.g. "googlebot", "bingbot") or null. Verified via reverse-DNS + forward confirmation. All
abuse.contact_email Abuse contact email from WHOIS data. Pro+

Példa kérés

$ curl https://api.openipapi.com/v1/lookup/185.220.101.45 \
     -H "X-API-Key: oip_your_api_key_here"

Példa válasz

{
  "ip": "185.220.101.45",
  "type": "IPv4",
  "geo": {
    "country_code": "DE",
    "country": "Germany",
    "region": "Hessen",
    "region_code": "HE",
    "city": "Frankfurt am Main",
    "postal_code": "60313",
    "latitude": 50.1109,
    "longitude": 8.6821,
    "timezone": "Europe/Berlin",
    "is_sanctioned": false,
    "sanction_lists": []
  },
  "network": {
    "asn": 205100,
    "as_name": "F3 Netze e.V.",
    "as_domain": "f3netze.de",
    "isp": "F3 Netze",
    "organization": "F3 Netze e.V.",
    "connection_type": "datacenter"
  },
  "threat": {
    "is_vpn": true,
    "is_proxy": false,
    "is_tor": true,
    "is_relay": false,
    "is_hosting": true,
    "threat_score": 85,
    "threat_categories": ["tor_exit_node", "known_abuser"],
    "bot_type": null
  },
  "abuse": {
    "contact_email": "abuse@f3netze.de"
  }
}

POST /v1/lookup/batch

Több IP-cím lekérdezése egyetlen kéréssel. A csoportméret-korlátok a csomagtól függnek.

POST https://api.openipapi.com/v1/lookup/batch
A csoportos lekérdezéshez Starter csomag vagy magasabb szükséges. Az ingyenes csomagú fiókok plan_required hibát kapnak.

Csoportméret-korlátok

Csomag Max IP kérésenként
Starter 100
Pro 500
Business 1,000
Enterprise 5,000

Kérés törzse

{
  "ips": [
    "185.220.101.45",
    "8.8.8.8",
    "1.1.1.1"
  ]
}

Válasz

A kéréssel megegyező sorrendben adja vissza a teljes lekérdezési objektumok becsomagolt tömbjét.

{
  "results": [
    { "ip": "185.220.101.45", /* full lookup object */ },
    { "ip": "8.8.8.8",          /* full lookup object */ },
    { "ip": "1.1.1.1",          /* full lookup object */ }
  ],
  "count": 3
}

GET /v1/me

A kérést küldő IP-cím geolokációját és fenyegetési adatait adja vissza. Hasznos a „Mi az én IP-m?" funkciókhoz.

GET https://api.openipapi.com/v1/me

A válasz megegyezik a GET /v1/lookup/{ip} válaszával, a hívó IP-jével előre kitöltve.

$ curl https://api.openipapi.com/v1/me \
     -H "X-API-Key: oip_your_api_key_here"

GET /v1/asn/{asn}

Részletes információk lekérése egy autonóm rendszer számáról. Starter csomag vagy magasabb szükséges.

GET https://api.openipapi.com/v1/asn/{asn}

A asn paraméter elfogadja mind a 13335 mind a AS13335 formátumot.

$ curl https://api.openipapi.com/v1/asn/13335 \
     -H "X-API-Key: oip_your_api_key_here"

Példa válasz

{
  "asn": 13335,
  "as_name": "Cloudflare, Inc.",
  "as_domain": "cloudflare.com",
  "organization": "Cloudflare, Inc.",
  "country_code": "US",
  "ip_ranges_count": 1284,
  "total_ips": 2359296
}

GET /v1/validate/{ip}

IP-cím érvényesítése és típusának meghatározása. Nem fogyaszt lekérdezési kvótát.

GET https://api.openipapi.com/v1/validate/{ip}

Example response

{
  "ip": "185.220.101.45",
  "valid": true,
  "type": "IPv4",
  "private": false,
  "bogon": false
}

GET /v1/fraud/{ip}

Összetett csaláspontszám (0–100) kockázati szinttel és végrehajtható javaslattal. VPN-, proxy-, Tor-, adatközpont- és korábbi visszaélési jeleket kombinál. Starter csomag vagy magasabb

GET https://api.openipapi.com/v1/fraud/{ip}

Example response

{
  "ip": "185.220.101.45",
  "fraud_score": 92,
  "risk_level": "critical",
  "signals": {
    "is_vpn": true,
    "is_proxy": false,
    "is_tor": true,
    "is_datacenter": true,
    "is_known_attacker": true,
    "high_risk_country": false
  },
  "recommendation": "block"
}

Kockázati szintek és javaslatok

Pontszám Kockázati szint Javaslat Tipikus művelet
0–30lowallowA kérés átengedése
31–60mediumreviewNaplózás kézi áttekintéshez
61–85highchallengeCAPTCHA / 2FA / megerősített hitelesítés kérése
86–100criticalblockElutasítás és figyelmeztetés

GET /v1/probe/{ip}

Valós idejű hálózati szondaadatok 60+ aktív szondázó csomópontunkból: nyitott TCP portok, szerviz bannerek, fordított DNS, teljes TLS-tanúsítvány részletek (tárgy, kibocsátó, SAN-ok, érvényesség) és észlelt szerviz kategóriák. Pro csomag vagy magasabb

GET https://api.openipapi.com/v1/probe/{ip}

Hogyan működik

  • · Friss adatok (≤ 7 napos): azonnal visszaadva a gyorsítótárból.
  • · Elavult adatok (> 7 napos): azonnal visszaadva, és háttérben újraszondázás kerül sorba. A válasz tartalmazza a "stale": true.
  • · Soha nem szondázott: azonnali szkennek kerül sorba. Az első eredmények jellemzően 1–5 percen belül érkeznek.
  • · A szondázási kvóta a havi lekérdezési kvóta 10%-a. Privát / fenntartott IP-ket nem lehet szondázni.

Example response

{
  "ip": "185.220.101.45",
  "reachable": true,
  "last_probed": "2026-04-18T14:23:11+00:00",
  "age_hours": 2.3,
  "stale": false,
  "refresh_queued": false,
  "probe_count_24h": 14,
  "probed_from_nodes": 8,
  "open_ports": [
    { "port": 22,   "service": "ssh",       "banner": "SSH-2.0-OpenSSH_8.9p1" },
    { "port": 80,   "service": "http",      "banner": "nginx/1.24.0" },
    { "port": 443,  "service": "https",     "banner": null },
    { "port": 9001, "service": "tor-relay", "banner": null }
  ],
  "reverse_dns": "tor-exit.f3netze.de",
  "tls": {
    "subject_cn":  "*.f3netze.de",
    "issuer":      "Let's Encrypt",
    "valid_from":  "2026-02-10T00:00:00Z",
    "valid_to":    "2026-05-10T00:00:00Z",
    "sans":        ["f3netze.de", "*.f3netze.de"],
    "fingerprint": "7e:4f:...:b2:e1"
  },
  "banners": {
    "22": "SSH-2.0-OpenSSH_8.9p1",
    "80": "nginx/1.24.0"
  },
  "detected_services": {
    "is_tor_relay":  true,
    "is_ssh_open":   true,
    "is_web_server": true,
    "is_vpn":        false,
    "is_proxy":      false
  }
}

A szkennelt portok

22 (ssh), 80 / 8080 (http), 443 / 8443 (https), 1080 (socks5), 3128 / 8888 (http-proxy), 9001 / 9030 (tor-relay / tor-dir), 9050 / 9150 (tor-socks), 1194 (openvpn), 4500 (ipsec-nat-t), 51820 (wireguard).

Felhasználási esetek

  • · Csalásmegelőzés – azonos SSH-verziókat / TLS-ujjlenyomatokat használó botfarmok felderítése
  • · Fenyegetésfelderítés – C2-szerverek figyelése banner / tanúsítvány változásokra
  • · OSINT / bug bounty – gyors szolgáltatás-felsorolás bármely nyilvános IP-n
  • · Hoszting / ISP üzemeltetés – nyílt proxyk / Tor kilépők megtalálása a hálózatban

GET /v1/proxy-attribution/{ip}

Azonosítja, hogy egy IP ismert lakóterületi proxy-poolhoz, kereskedelmi VPN-hez vagy adatközponti tartományhoz tartozik-e. A generikus is_proxy jelzőkkel ellentétben ez a végpont a konkrét szolgáltatóhoz (Bright Data, Oxylabs, NordVPN stb.) rendeli hozzá az IP-t – kritikus a csalásellenes csapatok számára, amelyeknek egyes szolgáltatókat engedélyezni, másokat blokkolni kell. Proxy Intel bővítmény

GET https://api.openipapi.com/v1/proxy-attribution/{ip}

Példa válasz (IP VPN-tartományban)

{
  "ip": "2.56.16.42",
  "detected": true,
  "primary_provider": {
    "provider":     "unknown_vpn",
    "display_name": "Unknown VPN",
    "network_type": "vpn",
    "confidence":   0.75
  },
  "networks": [
    {
      "provider":    "unknown_vpn",
      "network_type": "vpn",
      "confidence":   0.75,
      "source":       "x4bnet-vpn",
      "cidr":         "2.56.16.0/22"
    },
    {
      "provider":    "unknown_datacenter",
      "network_type": "datacenter",
      "confidence":   0.75,
      "source":       "x4bnet-datacenter"
    }
  ],
  "recommendation": "treat_as_vpn"
}

Hálózati típusok

  • · residential — lakóterületi proxy-poolok (Bright Data, Oxylabs, Smartproxy, IPRoyal, Hola, Honeygain, EarnApp, Peer2Profit, SOAX)
  • · vpn — kereskedelmi VPN-szolgáltatók (NordVPN, ExpressVPN, Surfshark, Mullvad, ProtonVPN, PIA, IPVanish, CyberGhost)
  • · datacenter — kereskedelmi proxy kilépéshez gyakran használt hoszting-szolgáltatók (AWS, DigitalOcean, OVH, Hetzner stb.)
  • · tor — Tor kilépő / relay csomópontok
  • · mobile — mobilszolgáltatói proxy-poolok

Javaslatok

Javaslat Jelentés
no_proxy_detectedAz IP nem egyezik meg egyetlen ismert poolban sem – normál forgalomként kezelendő.
treat_as_commercial_proxyAz IP lakóterületi proxy-poolban van – nem szkrapelő oldalakon valószínűleg rosszindulatú.
treat_as_vpnAz IP kereskedelmi VPN-tartományban van – alkalmazza a VPN-szabályzatot.
treat_as_datacenterAz IP adatközponti tartományból származik – nem valódi lakóterületi felhasználó.
block_or_challengeTor kilépőcsomópont – blokkolás vagy erős hitelesítés kérése.

GET /v1/account/usage

A fiók aktuális számlázási időszakának felhasználási statisztikáit adja vissza.

GET https://api.openipapi.com/v1/account/usage

Example response

{
  "plan": "Pro",
  "period_start": "2026-03-01",
  "period_end": "2026-03-31",
  "lookups_used": 184320,
  "lookups_limit": 500000,
  "lookups_remaining": 315680,
  "reset_at": "2026-04-01T00:00:00Z"
}

GET /v1/database/list

Felsorolja az adott csomaghoz elérhető MMDB adatbázisokat. MaxMind .mmdb cserealapú alternatívák offline / edge használathoz – bármely MaxMind DB olvasóval működnek (PHP, Go, Python, Node.js, Rust, Java).

GET https://api.openipapi.com/v1/database/list

Example response

{
  "plan": "Business",
  "sources": [
    {
      "source": "country",
      "filename": "geo-whois-asn-country.mmdb",
      "size_bytes": 8225621,
      "updated_at": "2026-04-18T02:00:00+00:00",
      "etag": "\"fa2b851f9155838b\"",
      "download_url": "https://api.openipapi.com/v1/database/download/country"
    }
  ]
}

GET /v1/database/download/{source}

A nyers MMDB fájlt streameli. Támogatja a ETag + If-None-Match feltételes GET-ekhez (304 Not Modified, ha a fájl nem változott). Sebességkorlát: napi 10 letöltés forrásonként.

GET https://api.openipapi.com/v1/database/download/{source}

Elérhető források

Forrás Tartalom Licenc Szükséges csomag
countryOrszágkód + ASNCC0Pro
asnASN + szervezetCC0Business
city-geolite2Város, régió, szél/hossz, időzóna (GeoLite2)MaxMind GeoLite2 EULABusiness
city-dbipVáros (GeoLite2 alternatíva)DB-IP LiteEnterprise

Példa: letöltés és használat PHP-ban

# Download latest MMDB
$ curl -H "X-API-Key: YOUR_KEY" \
    -o asn.mmdb \
    https://api.openipapi.com/v1/database/download/asn

# Use with maxmind-db/reader
$ composer require maxmind-db/reader

<?php
use MaxMind\Db\Reader;
$reader = new Reader('asn.mmdb');
$record = $reader->get('8.8.8.8');
// ['autonomous_system_number' => 15169,
//  'autonomous_system_organization' => 'Google LLC']

Szankciós jelző

Minden /v1/lookup válasz tartalmaz két mezőt a geo blokkban, amelyek jelzik, hogy az IP országa nemzetközi szankciók hatálya alá esik-e.

Mező Leírás
geo.is_sanctioned true ha az ország szerepel bármelyik figyelt szankciós listán; false egyébként.
geo.sanction_lists Az alkalmazandó szankciós program azonosítóinak tömbje: OFAC, EU, UN, UK. Üres tömb [] ha nincs szankció.

Lefedett szankciós listák: OFAC (USA), EU, ENSZ Biztonsági Tanács, brit OFSI. A jelenleg megjelölt országok közé tartozik Irán, Észak-Korea, Oroszország, Fehéroroszország, Szíria, Kuba, Venezuela, Szudán és mások. A lista karbantartott és frissített a programok változásával.

Szankcionált ország példa

"geo": {
  "country_code": "IR",
  "country": "Iran",
  ...
  "is_sanctioned": true,
  "sanction_lists": ["OFAC", "EU", "UN"]
}

Bot-érzékelés

Az OpenIPApi kettős fordított DNS-ellenőrzést végez a legitim webrobot-ok azonosítására. Az eredmény minden lekérdezésnél elérhető a threat.bot_type mezőben.

Mező Értékek
threat.bot_type null (nem ellenőrzött bot) vagy az alábbiak egyike: googlebot, google_special_crawl, bingbot, applebot, yandexbot, duckduckbot, facebookbot, semrushbot, ahrefsbot, mj12bot

Ellenőrzési módszer: (1) PTR-keresés az IP-n → hosztnév. (2) A hosztnévnek egyeznie kell a bot domainmintájával (pl. *.googlebot.com). (3) A hosztnév előre irányú DNS-feloldásának vissza kell adnia az eredeti IP-t. Az eredmények 24 óráig kerülnek gyorsítótárba.

Ellenőrzött Googlebot példa

"threat": {
  "is_vpn": false,
  "is_proxy": false,
  "is_tor": false,
  "threat_score": 0,
  "bot_type": "googlebot"
}

Történeti lekérdezés

Adjon hozzá egy ?date=YYYY-MM-DD paramétert bármely egyedi IP-lekérdezéshez, hogy lekérje az adott dátum pillanatfelvételét.

A történeti lekérdezéshez Pro csomag vagy magasabb szükséges. A pillanatfelvételek legfeljebb 365 napra visszamenőleg érhetők el. A legtöbbet lekérdezett IP-kről naponta automatikusan készül pillanatfelvétel.
GET https://api.openipapi.com/v1/lookup/{ip}?date=2026-01-15

Példa kérés

$ curl "https://api.openipapi.com/v1/lookup/185.220.101.45?date=2026-01-15" \
     -H "X-API-Key: oip_your_api_key_here"

Válaszboríték

{
  "ip": "185.220.101.45",
  "snapshot_date": "2026-01-15",
  "is_historical": true,
  "data": {
    /* standard lookup response */
  }
}

Hiba: nem elérhető pillanatfelvétel

{
  "error": "No historical snapshot available for this IP on 2026-01-15",
  "code": "no_snapshot"
}

Hibakódok

Kód HTTP státusz Leírás
invalid_api_key 401 Az API-kulcs hiányzik, hibás formátumú vagy visszavonták.
limit_exceeded 429 Felhasználta az aktuális számlázási időszak összes lekérdezését.
plan_required 403 A kért funkció az aktuális csomagban nem elérhető.
invalid_ip 400 A megadott IP-cím nem érvényes IPv4 vagy IPv6 cím.
not_found 404 Nem található adat a kért erőforráshoz (pl. ismeretlen ASN).
no_snapshot 404 A kért dátumra vonatkozóan nem létezik történeti pillanatfelvétel ehhez az IP-hez.
date_out_of_range 400 A történeti lekérdezés dátuma több mint 365 napja van.
invalid_date 400 A dátumparaméter hiányzik, hibás formátumú vagy jövőbeli.
plan_upgrade_required 403 A kért funkció magasabb csomagot igényel.
rate_limited 429 Rövid időn belül túl sok kérés érkezett. Várjon és próbálja újra.
internal_error 500 Váratlan szerverhiba lépett fel. Lépjen kapcsolatba a támogatással, ha a probléma fennmarad.

Sebességkorlátok

A havi lekérdezési kvótákon kívül a kérések API-kulcsonként csúszó ablakos sebességkorlát alá esnek. Túllépés esetén az API HTTP 429 kódot ad vissza egy Retry-After fejléccel.

Csomag Kérések / perc Lekérdezések / hó
Free 30 10,000
Starter 120 100,000
Pro 300 500,000
Business 600 2,000,000
Enterprise Custom Unlimited

További korlátok: /v1/validate (hitelesítés nélkül) legfeljebb 60 kérés/perc hívó IP-nként; /v1/me 30 kérés/perc. Az MMDB letöltések napi 10 letöltésre korlátozottak forrásonként fiókonként. A sebességkorlát-válaszok tartalmazzák a Retry-After.

Webhookok

A webhookok lehetővé teszik, hogy valós idejű HTTP POST értesítéseket kapjon, ha egy figyelt IP állapota megváltozik. Konfigurálja őket a konzolon → Webhookok, vagy az irányítópult felületén – API-hívás nem szükséges.

Események

Esemény Mikor aktiválódik
vpn_detectedEgy figyelt IP-t újonnan VPN-végpontként észlelnek.
tor_detectedEgy figyelt IP megjelenik egy Tor kilépőcsomópont-listán, vagy Tor-relének szondázzák.
proxy_detectedEgy figyelt IP-t nyílt vagy SOCKS-proxyként észlelnek.
high_threatA fenyegetési pontszám átlépi a beállított küszöbértéket (50–95).

Kérés fejlécek

POST https://your-endpoint.example.com/webhook
Content-Type: application/json
User-Agent: OpenIPApi-Webhook/1.0
X-OpenIPApi-Event: high_threat
X-OpenIPApi-Signature: sha256=8c7f1a...b2e

Példa payload

{
  "event": "high_threat",
  "delivered_at": "2026-04-18T12:34:56Z",
  "webhook_id": 142,
  "data": {
    "ip": "185.220.101.45",
    "threat_score": 92,
    "previous_score": 45,
    "is_tor": true,
    "is_vpn": true
  }
}

Az aláírás ellenőrzése

Minden webhookot HMAC-SHA256 aláír a nyers JSON-törzs és a webhook-titok alapján. Az aláírás a X-OpenIPApi-Signature fejlécben kerül küldésre sha256=<hex>. formátumban. Mindig ellenőrizze a payload feldolgozása előtt:

PHP

$body = file_get_contents('php://input');
$hdr  = $_SERVER['HTTP_X_OPENIPAPI_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac(
    'sha256', $body, $webhookSecret
);
if (!hash_equals($expected, $hdr)) {
    http_response_code(401);
    exit;
}
// Safe to process $body now

Node.js (Express)

const crypto = require('crypto');

app.post('/webhook',
  express.raw({ type: 'application/json' }),
  (req, res) => {
    const hdr = req.headers['x-openipapi-signature'];
    const expected = 'sha256=' + crypto
      .createHmac('sha256', process.env.WEBHOOK_SECRET)
      .update(req.body).digest('hex');
    if (expected !== hdr) return res.status(401).end();
    // Process JSON.parse(req.body)
  });

Újrapróbálkozási szabályzat

A végpontnak 10 másodpercen belül HTTP 2xx-szel kell visszaigazolnia a kézhezvételt. Bármely más státusz (vagy időtúllépés) exponenciális visszalépéses újrapróbálkozást vált ki: 1 perc, 5 perc, 30 perc, 2 óra, 12 óra. Az utolsó próbálkozás után a webhook sikertelenként jelölődik meg és irányítópulton értesítés jelenik meg.

Kézbesítési előzmények és visszajátszás

A konzolon → Webhookok az utolsó 100 kézbesítési kísérletet tárolja fiókonként, megjelenítve az esemény típusát, a HTTP státuszkódot és a végpont által visszaadott választörzset. Bármely korábbi kézbesítést visszajátszhat az eredeti aláírt payload újraküldéséhez, és a beépített Aláírás-debugger segítségével ellenőrizheti a HMAC-SHA256 aláírásokat kliensoldali, anélkül hogy a titkát bármely szerverrel megosztaná.

A visszajátszott kézbesítések egy extra X-OpenIPApi-Replay: 1 fejlécet tartalmaznak, hogy a végpont meg tudja különböztetni őket az élő eseményektől.

Kódpéldák — curl

Egyedi lekérdezés

$ curl https://api.openipapi.com/v1/lookup/8.8.8.8 \
     -H "X-API-Key: oip_your_api_key_here"

Csoportos lekérdezés

$ curl -X POST https://api.openipapi.com/v1/lookup/batch \
     -H "X-API-Key: oip_your_api_key_here" \
     -H "Content-Type: application/json" \
     -d '{"ips": ["8.8.8.8", "1.1.1.1", "185.220.101.45"]}'

Az én IP-m

$ curl https://api.openipapi.com/v1/me \
     -H "X-API-Key: oip_your_api_key_here"

Kódpéldák — JavaScript

Egyedi lekérdezés (fetch)

const response = await fetch('https://api.openipapi.com/v1/lookup/8.8.8.8', {
  headers: {
    'X-API-Key': 'oip_your_api_key_here'
  }
});

const data = await response.json();
console.log(data.geo.country);       // "United States"
console.log(data.threat.is_vpn);     // false
console.log(data.threat.threat_score); // 0

Csoportos lekérdezés

const response = await fetch('https://api.openipapi.com/v1/lookup/batch', {
  method: 'POST',
  headers: {
    'X-API-Key': 'oip_your_api_key_here',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    ips: ['8.8.8.8', '1.1.1.1', '185.220.101.45']
  })
});

const { results } = await response.json();
for (const info of results) {
  console.log(info.ip, info.geo.city, info.threat.threat_score);
}

Kódpéldák — Python

Egyedi lekérdezés (requests)

import requests

API_KEY = "oip_your_api_key_here"
headers = {"X-API-Key": API_KEY}

r = requests.get(
    "https://api.openipapi.com/v1/lookup/8.8.8.8",
    headers=headers
)
r.raise_for_status()
data = r.json()

print(data["geo"]["country"])       # United States
print(data["threat"]["is_vpn"])     # False
print(data["threat"]["threat_score"]) # 0

Csoportos lekérdezés

import requests

API_KEY = "oip_your_api_key_here"
headers = {
    "X-API-Key": API_KEY,
    "Content-Type": "application/json"
}

payload = {
    "ips": ["8.8.8.8", "1.1.1.1", "185.220.101.45"]
}

r = requests.post(
    "https://api.openipapi.com/v1/lookup/batch",
    json=payload,
    headers=headers
)
r.raise_for_status()

for info in r.json()["results"]:
    print(info["ip"], info["geo"]["city"], info["threat"]["threat_score"])

Készen áll a kezdésre?

10 000 ingyenes lekérdezés havonta. Nem szükséges bankkártya.

Ingyenes API-kulcs igénylése