webatla API

ドメインデータベースをそのまま自社のスタックに取り込めます。Bearerキーで認証し、データセット全体または一部のスライスを圧縮JSONLとしてダウンロードして、ローカルでフィルタリングします。行単位の課金はありません。

APIキーを取得 OpenAPI仕様
RESTHTTPS経由、JSON形式のレスポンス
Bearerトークン認証、IP許可リスト
JSONLzstd圧縮ファイル
OpenAPI3.1 マシン可読仕様

APIの仕組み

このAPIはライブクエリのエンドポイントではなく、ファイル全体を提供します。データセット全体または単一のスライスをダウンロードし、自分のマシン上で分割・フィルタリングします。これによりダウンロードは高速に保たれ、クエリの方法に制限はありません。

1. キーを作成

アカウントでBearer APIキーを発行してください。必要に応じてIPアローリストに限定できます。発行したキーはAuthorizationヘッダーとして送信してください。

2. ファイルをダウンロード

完全なエクスポートを取得するか、TLD、TLDサフィックス、国、テクノロジーのいずれかで絞り込んだスライスを取得してください。中断したダウンロードはRangeリクエストで再開できます。

3. ローカルで絞り込み

zstdで解凍し、jqやデータウェアハウス、あるいは自作のコードでクエリを実行してください。1スライスにつき次元は1つです。残りの次元との組み合わせはご自身で行ってください。

認証

ほとんどのエンドポイントにはBearer APIキーが必要です。公開カタログ、プレビューおよびサンプルのエンドポイントには認証が不要です。

  • キーの作成・管理は次のページで行えます: アカウント. 完全なキーは作成時に一度だけ表示されるため、安全に保管してください。
  • 認証が必要なすべてのリクエストで、それを Authorization: Bearer wbtl_… として送信してください。
  • 任意でキーをIP許可リストに制限できます。他のアドレスからのリクエストに返されるステータスコードは 401.
  • キーごとにレート制限が適用されます。キーはいつでもローテーションまたは失効させることができます。
GEThttps://webatla.com/api/v1/me Authorization: Bearer wbtl_•••••••f3a9 # 200 OK { "user": { "id": "…", "email": "you@example.com", "role": "customer" }, "apiKeyId": "…", "scopes": ["me:read"] }

エンドポイント

完全な機械可読仕様は次のURLで確認できます /api/v1/openapi.json (OpenAPI 3.1).

メソッド エンドポイント 認証 レート制限 目的
GET/api/v1/datasets公開60/min公開データセットを価格と行数付きで一覧表示します
GET/api/v1/preview?dataset={slug}公開30/minデータセット全体の無料10,000行サンプル
GET/api/v1/sample/{scope}/{key}?dataset={slug}公開30/min1つのエンティティ(TLD、サフィックス、国、テクノロジー)向けの無料20行サンプル
GET/api/v1/meBearer200/min現在のキーのユーザーとスコープ
GET/api/v1/me/ordersBearer200/min注文とそのステータス
GET/api/v1/me/downloadsBearer200/minダウンロード履歴 (?limit= 最大500件)
GET/api/download/{slug}Bearer240/min指定した形式での完全なデータセットのエクスポート .jsonl.zst
GET/api/download/{slug}/{scope}/{key}Bearer240/minデータセットのスコープごとの1セグメント

scope は次のいずれかです: tld, tld_suffix, country または technology. ダウンロードエンドポイントの利用には、当該データセットへの有効な有料アクセス権が必要です。

クイックスタート

ダウンロードは1回につき1ファイルです。データセット全体を取得するか、先に単一の次元へ絞り込んでください。

完全なエクスポートをダウンロード

GEThttps://webatla.com/api/download/all-data Authorization: Bearer wbtl_•••••••f3a9 # データセット全体を1つの.jsonl.zstファイルとしてストリーミング

単一のスライスをダウンロード

GEThttps://webatla.com/api/download/all-data/tld/com https://webatla.com/api/download/all-data/tld_suffix/com.ua https://webatla.com/api/download/websites-ranking/country/DE https://webatla.com/api/download/technologies/technology/wordpress Authorization: Bearer wbtl_•••••••f3a9 # ファイルごとに次元は1つだけです。残りはローカルで絞り込みます。

curl、再開、ローカルフィルタリング

curl -OJ -H "Authorization: Bearer wbtl_•••••••f3a9" \ https://webatla.com/api/download/technologies/technology/wordpress # 中断したダウンロードを -C - で再開 curl -C - -OJ -H "Authorization: Bearer wbtl_•••••••f3a9" \ https://webatla.com/api/download/all-data # 自分のマシンで解凍してフィルタリング zstdcat webatla-technologies-WordPress-*.jsonl.zst \ | jq -c 'select(.["Country by IP"] == "DE")' > wordpress-de.jsonl

過去のダウンロードを一覧表示するには次を使用します: GET https://webatla.com/api/v1/me/downloads. キーなしで無料プレビューを試すには: GET https://webatla.com/api/v1/preview?dataset=all-data.

データ形式

ファイルはJSON Lines形式(1行につき1つのJSONオブジェクト)で、zstd圧縮されています。スキーマはデータセット間で共通なので、シグナルは同じドメインキー上で揃います。

  • 各行が1つのドメインです。展開には次を使用します: zstd -d 。ストリーム処理には次を使用します: zstdcat.
  • 列名にはスペースが含まれることがあるため、jqではブラケットキー構文で読み取ります。例: .["Country by IP"].
  • フィールドは欠落しているかnullの場合があります。デフォルト値を設定してください。例: .Registrar // "".
  • 日付はISO 8601形式の文字列です。例: "2026-11-18T04:47:13.573" または "2026-04-22".

列リファレンス

データセット
Domain string "arriva.com.hr" d1–d7
TLD suffix string "com.hr" d1–d7
TLD string "hr" d1–d7
Domain type string: "ICANN" | "PRIVATE" "ICANN" d1–d4, d6, d7
HTTP status integer | null 200 d3, d6, d7
IP address string | null "31.13.236.27" d3, d6, d7
Country by IP string (ISO-2) | null "DE" d2, d3, d6, d7
Social networks object | null {"facebook": ["https://…"]} d3, d6, d7
Technologies last data checked string (date) | null "2026-04-22" d3, d6, d7
Technologies array | object | null ["WordPress"] / {"PHP": "4.4.9"} d3, d6, d7
DNS last data checked string (date) "2026-06-03" d4, d6, d7
DNS Status string: "TRUE" | "FALSE" "TRUE" d4, d6, d7
DNS records object | null {"A": ["31.13.236.27"], "MX": [{"host": "…", "priority": 0}]} d4, d6, d7
PR value number 4.808574e-9 / 0 d2, d3, d6, d7
Harmonic value number 10305265 / 0 d2, d3, d6, d7
RDAP/WHOIS last date checked string (date) "2026-01-04" d5, d7, d6*
RDAP/WHOIS method string: "rdap" | "whois" "whois" d5, d7, d6*
Domain creation date string (ISO 8601) | null "2024-12-12T14:04:04" d2, d3, d5, d6, d7
Domain expiration date string (ISO 8601) | null "2026-12-12T14:04:04" d2, d3, d5, d6, d7
Domain last changed string (ISO 8601) | null "2026-01-04T04:43:01" d5, d7, d6*
Registrar string | null "REGRU-RU" d5, d6, d7
RDAP/WHOIS Record object | null {"raw_response": "% TCI Whois…"} d5, d6*
Response Status RDAP/WHOIS string "Domain is active" d5, d6*

データセット: d1 All active domains · d2 Websites + Ranking · d3 Technologies · d4 DNS · d5 RDAP & WHOIS · d6 All data · d7 Domain Investor.
* データセット All data (d6) では、登録情報のあるドメインにのみRDAP/WHOISフィールドが存在します。

ネストされたフィールドの構造

  • Technologies は名前の配列、または名前をバージョンに対応させたオブジェクトのいずれかです。
  • DNS Status は文字列: "TRUE" または "FALSE", 。真偽値ではありません。
  • DNS records はレコードタイプをその値にマッピングします: A, AAAA, NS, SOA, TXT, MX, CNAME, CAA, HTTPS, DNSKEY, DS, SRV, PTR…. MX は次の形式です: [{"host", "priority"}].
  • Social networks はプラットフォームをプロフィールリンクにマッピングします: facebook, instagram, x-twitter, linkedin, youtube, whatsapp, telegram, tiktok, github…. これらはサイト自体の公開リンクであり、個人の連絡先ではありません。
  • RDAP/WHOIS Record は生の登録レコードを保持しており、個人情報フィールドはICANNの規則に従って編集済みです。

レシピ

実際のエクスポートファイルで検証済みです。ファイルをダウンロードした後は、すべてローカルで実行されます。

カウント・抽出・CSVエクスポート

# スライス内の行数をカウント zstdcat webatla-all-data-com-*.jsonl.zst | wc -l # 1行に1ドメイン zstdcat webatla-all-data-com-*.jsonl.zst | jq -r '.Domain' > domains.txt # 選択した列をCSVへ zstdcat webatla-all-data-com-*.jsonl.zst \ | jq -r '[.Domain, .["Country by IP"] // "", .Registrar // ""] | @csv' > out.csv

テクノロジーで絞り込み

# Technologiesは配列またはオブジェクトなので両方に対応 zstdcat webatla-all-data-com-*.jsonl.zst \ | jq -c 'select(.Technologies | if type=="array" then index("WordPress") elif type=="object" then has("WordPress") else false end)' > wordpress.jsonl

DNSと有効期限

# パークドメインまたは稼働していないドメイン zstdcat webatla-dns-com-*.jsonl.zst \ | jq -r 'select(.["DNS Status"] == "FALSE") | .Domain' > parked.txt # ユニークなAレコード zstdcat webatla-dns-com-*.jsonl.zst \ | jq -r '.["DNS records"].A[]?' | sort -u > ips.txt # 2026年6月に期限切れになるドメイン zstdcat webatla-all-data-com-*.jsonl.zst \ | jq -r 'select((.["Domain expiration date"] // "") | startswith("2026-06")) | .Domain'

Python

# 先に解凍 zstd -d webatla-all-data-com-*.jsonl.zst # その後1行ずつストリーミング import json with open("webatla-all-data-com-2026-06-09.jsonl", encoding="utf-8") as f: for line in f: row = json.loads(line) t = row.get("Technologies") names = t if isinstance(t, list) else list(t) if isinstance(t, dict) else [] if "WordPress" in names and row.get("Country by IP") == "DE": print(row["Domain"])

レスポンスコードと制限

エラーは次の形式のJSONボディを返します {"error": "…"}. レート制限に関するヘッダーはすべてのリクエストで返されます。

コード意味
200 / 206成功です。206は部分的な(再開された)ダウンロードを表します。
302ダウンロードのルートでブラウザセッションが見つかりません。APIキーの場合は代わりに401が返されます。
401APIキーが未指定、無効、またはIPでブロックされています。
403このデータセットへの有効な有料アクセスがありません。
404不明なデータセットまたはエンティティ、あるいはファイルがまだアップロードされていません。
416不正な形式、またはマルチパートのRangeリクエストです。
429レート制限を超えました。しばらく待ってから再試行してください。

パブリックエンドポイントはIPごとに制限されます。認証済みエンドポイントは、上記の通りキーごとまたはユーザーごとに制限されます。

開発を始めましょう

アカウントでキーを作成するか、先にデータセットを閲覧して無料サンプルを取得してください。 カスタムの抽出についてご質問がある場合は、メールでお問い合わせください: support@webatla.com.