API webatla
Підключіть базу доменів напряму до власного стека. Автентифікуйтеся ключем Bearer, завантажте цілий датасет або окремий зріз у стисненому JSONL і фільтруйте його локально. Без тарифікації за кожен рядок.
Як працює API
API віддає цілі файли, а не працює як ендпоінт живих запитів. Ви завантажуєте повний датасет або окремий зріз, а далі ріжете та фільтруєте його на власній машині. Завдяки цьому завантаження лишаються швидкими, а на спосіб запитів немає жодних обмежень.
1. Створіть ключ
Згенеруйте ключ API типу Bearer у своєму акаунті, за бажанням обмеживши його списком дозволених IP. Надсилайте його у заголовку Authorization.
2. Завантажте файли
Заберіть повний експорт або один зріз за TLD, суфіксом TLD, країною чи технологією. Перервані завантаження можна продовжити запитом Range.
3. Фільтруйте локально
Розпакуйте через zstd і робіть запити за допомогою jq, сховища даних або власного коду. Один вимір на зріз, решту перетинайте самостійно.
Автентифікація
Більшість ендпоінтів вимагають ключа API типу Bearer. Публічний каталог, а також ендпоінти перегляду та зразків працюють без автентифікації.
- Створюйте ключі та керуйте ними у вашому акаунті. Повний ключ показується лише один раз під час створення, тому збережіть його в надійному місці.
- Надсилайте його як
Authorization: Bearer wbtl_…у кожному автентифікованому запиті. - За бажанням обмежте ключ списком дозволених IP. Запити з інших адрес отримують
401. - Ліміт частоти запитів рахується окремо для кожного ключа. Ключ можна замінити або відкликати будь-коли.
Ендпоінти
Повний машиночитний контракт доступний за адресою /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 | Безкоштовний зразок на 20 рядків для однієї сутності (TLD, суфікс, країна, технологія) |
| GET | /api/v1/me | Bearer | 200/min | Користувач і області доступу поточного ключа |
| GET | /api/v1/me/orders | Bearer | 200/min | Ваші замовлення та їхній статус |
| GET | /api/v1/me/downloads | Bearer | 200/min | Історія ваших завантажень (?limit= до 500) |
| GET | /api/download/{slug} | Bearer | 240/min | Повний експорт датасету у форматі .jsonl.zst |
| GET | /api/download/{slug}/{scope}/{key} | Bearer | 240/min | Один зріз датасету за обраною областю |
scope може бути tld, tld_suffix, country або technology. Ендпоінти завантаження вимагають оплаченого та чинного доступу до цього датасету.
Швидкий старт
Кожне завантаження — це один файл. Заберіть увесь датасет або спершу звузьте вибірку до одного виміру.
Завантажити повний експорт
Завантажити окремий зріз
curl, відновлення та локальна фільтрація
Перегляньте минулі завантаження через 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
Фільтрація за технологією
DNS і терміни дії
Python
Коди відповідей і ліміти
Помилки повертають тіло JSON у вигляді {"error": "…"}. Заголовки з лімітами частоти повертаються на кожен запит.
| Код | Значення |
|---|---|
| 200 / 206 | Успіх. 206 означає часткове (відновлене) завантаження. |
| 302 | На маршруті завантаження немає сесії браузера. Для ключів API натомість повертається 401. |
| 401 | Ключ API відсутній, недійсний або заблокований за IP. |
| 403 | Немає активного оплаченого доступу до цього датасету. |
| 404 | Невідомий датасет чи сутність, або файл ще не завантажено на сервер. |
| 416 | Некоректний або багаточастинний запит Range. |
| 429 | Перевищено ліміт частоти запитів. Зачекайте та повторіть спробу. |
Публічні ендпоінти обмежені за IP. Автентифіковані ендпоінти обмежені за ключем або за користувачем, як зазначено вище.
Почніть розробку
Створіть ключ у своєму акаунті або спершу перегляньте датасети та заберіть безкоштовний зразок. Питання щодо індивідуального зрізу? Напишіть на support@webatla.com.