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나 데이터 웨어하우스, 또는 직접 작성한 코드로 쿼리하십시오. 슬라이스 하나당 차원은 하나이며, 나머지 차원의 교집합은 직접 처리해야 합니다.

인증

대부분의 엔드포인트는 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/min하나의 엔티티(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개 단위입니다. 데이터셋 전체를 받거나, 먼저 단일 차원으로 좁혀서 받으십시오.

전체 내보내기 다운로드

GEThttps://webatla.com/api/download/all-data Authorization: Bearer wbtl_•••••••f3a9 # 전체 데이터셋을 하나의 .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 # 파일당 차원은 정확히 하나입니다. 나머지는 로컬에서 교차 필터링하십시오.

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 형식(한 줄에 JSON 객체 하나)이며, zstd로 압축되어 있습니다. 스키마는 모든 데이터셋에서 공통이므로, 동일한 도메인 키를 기준으로 신호가 정렬됩니다.

  • 각 행은 하나의 도메인입니다. 압축 해제에는 다음을 사용합니다: 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 # 한 줄에 도메인 하나 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 # 이후 한 줄씩 스트리밍 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.