webatla dosyaları nasıl kullanılır

Her dosya zstd ile sıkıştırılmış JSON Lines biçimindedir ve her satırda bir alan adı bulunur. Dosyayı nasıl açacağınızı, ona nasıl soru soracağınızı ve kendi altyapınıza nasıl yükleyeceğinizi burada görebilirsiniz. Her tarif ücretsiz 10K satırlık önizlemede çalıştırıldı, gördüğünüz çıktı da bu çalıştırmanın gerçek çıktısıdır.

Biçim
JSON Lines, zstd ile sıkıştırılmış
.jsonl.zst
Her satır
Bir alan adı, her anahtar daima mevcut
değerler null olabilir
Dosya adı
Veri seti ve dışa aktarma tarihi
all-data-2026-10-16.jsonl.zst
Güncellik
Her gün yeni bir dışa aktarma
sütunlar her gün aynı

1 · İndirdiğiniz dosyalar

İndirdiğiniz dosyalar

Her webatla veri seti JSON Lines biçimindedir: her satırda bir alan adı, yani satır başına bir JSON nesnesi. Ücretli dosyalar zstd ile sıkıştırılmıştır.

DosyaİçindekilerBiçim
Tam veri setiVeri setinin tüm satırları.jsonl.zst
DilimTek bir TLD, TLD uzantısı, ülke (IP'ye göre) veya teknolojinin tüm satırları, tam dosyayla aynı alanlarla.jsonl.zst
Ücretsiz önizleme (10K satır)Tam dosyanın ilk 10.000 satırı.jsonl düz, sıkıştırılmamış
TLD, ülke ve teknoloji sayfalarında 20 satırlık önizlemeO sayfadaki öğenin satırları, ücretli dosyayla aynı sütun adlarıyla. Rastgele değil, en eksiksiz satırlardan bazılarını gösterir.sayfada

Tam dosyayı filtrelemek yerine bir dilim indirin

Tek bir TLD, ülke veya teknolojiye ihtiyacınız varsa dilimi zaten filtrelenmiştir ve kat kat daha küçüktür.

Ücretsiz önizleme biçimi gösterir, tipik bir dağılımı değil

Çoğu dosya TLD uzantısına göre sıralıdır, bu yüzden ilk 10.000 satır alfabenin başındaki yalnızca birkaç uzantıyı kapsar ve .com bunların arasında yoktur. Önizlemede hiçbir şey döndürmeyen bir filtre, tam dosyada milyonlarca satır döndürebilir. Önizlemeyi komutlarınızı oluşturmak ve denemek için kullanın. Komutlar ücretli dosyada değişmeden çalışır.

2 · Dosyayı açın

Sıkıştırmayı açmadan içine bakın

Buradaki her araç sıkıştırılmış dosyayı akış olarak okur. Önizleme ile ücretli dosya arasındaki tek fark, dosyayı nasıl açtığınızdır.

Başlamadan önce: bir araç seçin

sudo apt install zstd jq        # Debian, Ubuntu
brew install zstd jq duckdb     # macOS
pip install duckdb zstandard    # Python, any OS

Windows'ta WSL kullanın.

Önizlemede ve ücretli dosyada aynı komut

# free preview (plain JSONL): give the file to jq directly
jq -c 'select(."Country by IP" == "BG") | {Domain, "TLD suffix", "IP address"}' \
  webatla-all-data-preview-10k.jsonl

# paid file or slice (.jsonl.zst): decompress on the fly into the same jq
zstd -dc all-data-2026-10-16.jsonl.zst \
  | jq -c 'select(."Country by IP" == "BG") | {Domain, "TLD suffix", "IP address"}'
Ücretsiz 10K satırlık önizlemede gerçek çıktı
{"Domain":"360.0.bg","TLD suffix":"0.bg","IP address":"31.13.236.27"}
{"Domain":"doktoranti5.0.bg","TLD suffix":"0.bg","IP address":"185.80.2.212"}
{"Domain":"edu5.0.bg","TLD suffix":"0.bg","IP address":"79.98.104.12"}
...

zstdcat iki tür dosyayı da okur, bu yüzden önizleme ve ücretli dosya için tek bir komut zinciri yeterlidir: zstdcat FILE | ...

DuckDB

brew install duckdbwinget install DuckDB.cli

SELECT Domain, TLD, "Country by IP", "HTTP status"
FROM read_json('all-data-2026-10-16.jsonl.zst',
  columns = {Domain: 'VARCHAR', TLD: 'VARCHAR',
             "Country by IP": 'VARCHAR', "HTTP status": 'INTEGER'})
LIMIT 3;
Ücretsiz 10K satırlık önizlemede gerçek çıktı
Domain       TLD  Country by IP  HTTP status
360.0.bg     bg   BG             200
digsys.0.bg  bg   NULL           200
dnssec.0.bg  bg   NULL           0

zstdcat + jq

brew install zstd jqapt install zstd jq

zstdcat dns-2026-10-16.jsonl.zst | head -n 1 | jq .
Ücretsiz 10K satırlık önizlemede gerçek çıktı
{
  "Domain": "360.0.bg",
  "TLD suffix": "0.bg",
  "TLD": "bg",
  "Domain type": "ICANN",
  ...

Python

pip install zstandard

import io, json, zstandard
with open("dns-2026-10-16.jsonl.zst", "rb") as fh:
    stream = zstandard.ZstdDecompressor().stream_reader(fh, read_across_frames=True)
    for line in io.TextIOWrapper(stream, encoding="utf-8"):
        row = json.loads(line)
        mx = (row["DNS records"] or {}).get("MX") or []
        if any((m.get("host") or "").lower().endswith(".google.com") for m in mx):
            print(row["Domain"])
Ücretsiz 10K satırlık önizlemede gerçek çıktı
edu5.0.bg
shopping.9guacu.br
ffe.a.se
...

Satırları sayın ve alanları listeleyin

brew install zstd jqapt install zstd jq

zstd -dc all-data-2026-10-16.jsonl.zst | wc -l
zstd -dc all-data-2026-10-16.jsonl.zst | head -n 1 | jq -r 'keys_unsorted[]'
Ücretsiz 10K satırlık önizlemede gerçek çıktı
10000
Domain
TLD suffix
TLD
Domain type
HTTP status
...

Kendi rastgele örneğinizi oluşturun

Ücretsiz önizleme rastgele değildir. İndirdiğiniz bir dosyadan temsili bir örnek almak için:

Linux: shufmacOS: gshuf (brew install coreutils)

zstd -dc all-data-2026-10-16.jsonl.zst | shuf -n 1000 > random-1000.jsonl
wc -l < random-1000.jsonl
Ücretsiz 10K satırlık önizlemede gerçek çıktı
1000

3 · Soruları yanıtlayın

Günlük dosyanın yanıtladığı sorular

Önce yanıt, DuckDB sorgusu ise tek tık uzakta. İndirdiğiniz dosyanın klasöründe bir terminal açın, duckdb yazın ve sorguyu yapıştırın.

Satış Technologies

Hangi WooCommerce mağazaları Almanya'da barındırılıyor?

Ücretsiz 10K satırlık önizlemede gerçek çıktı
ariana.acDE
fjak.acDE
empower.abudhabiDE

PR value'ya göre sıralandı ve 12 satırlık woocommerce-de.csv olarak kaydedildi. CRM'iniz veya elektronik tablonuz bu CSV'yi açabilir.

Sorguyu gösterin
COPY (SELECT Domain, "PR value" FROM read_json('technologies-2026-10-16.jsonl.zst',
    columns = {Domain: 'VARCHAR', "Country by IP": 'VARCHAR',
               Technologies: 'JSON', "PR value": 'DOUBLE'})
  WHERE "Country by IP" = 'DE' AND list_contains(CASE json_type(Technologies)
    WHEN 'OBJECT' THEN json_keys(Technologies)
    WHEN 'ARRAY' THEN from_json(Technologies, '["VARCHAR"]') END, 'WooCommerce')
  ORDER BY "PR value" DESC
) TO 'woocommerce-de.csv';
Technologies veri seti →
Ürün pazarlaması Technologies

Hangi site oluşturucu en çok web sitesinde kullanılıyor?

Ücretsiz 10K satırlık önizlemede gerçek çıktı
WordPress628 · %80,6
Wix52 · %6,7
Squarespace45 · %5,8
Drupal22 · %2,8
Webflow20 · %2,6
Joomla12 · %1,5

Pay, tüm web siteleri arasında değil, bu altı site oluşturucu arasında hesaplanır. Tek bir pazarı karşılaştırmak için sorguyu bir ülke diliminde çalıştırın.

Sorguyu gösterin
SELECT tech, count(*) AS sites,
       round(100 * count(*) / sum(count(*)) OVER (), 1) AS pct
FROM (SELECT unnest(CASE json_type(Technologies)
        WHEN 'OBJECT' THEN json_keys(Technologies)
        WHEN 'ARRAY' THEN from_json(Technologies, '["VARCHAR"]') END) AS tech
      FROM read_json('technologies-2026-10-16.jsonl.zst', columns = {Technologies: 'JSON'}))
WHERE tech IN ('WordPress', 'Wix', 'Squarespace', 'Webflow', 'Drupal', 'Joomla')
GROUP BY tech ORDER BY sites DESC;
Technologies veri seti →
Marka koruma RDAP & WHOIS

Hangi yeni alan adları marka adınızı içeriyor?

Ücretsiz 10K satırlık önizlemede gerçek çıktı, 16 Eki 2026 tarihinde çalıştırıldı
kayorashop.store2026-10-11
moonovaactivewearshop.com2026-10-10
shopcastava.com2026-10-01

Son 30 günde kaydedilenler, kayıt kuruluşuyla birlikte. shop yerine marka adınızı yazın.

Sorguyu gösterin
SELECT "Domain creation date"[:10] AS created, Domain, Registrar
FROM read_json('rdap-whois-2026-10-16.jsonl.zst', columns = {Domain: 'VARCHAR',
  "Domain creation date": 'VARCHAR', Registrar: 'VARCHAR'})
WHERE Domain LIKE '%shop%'
  AND "Domain creation date" >= CAST(current_date - 30 AS VARCHAR)
ORDER BY created DESC;
RDAP & WHOIS veri seti →
Alan adı yatırımı Websites + Ranking

Sıralamada yer alan hangi web sitelerinin süresi önümüzdeki 30 gün içinde doluyor?

Ücretsiz 10K satırlık önizlemede gerçek çıktı, 16 Eki 2026 tarihinde çalıştırıldı
adamcadre.ac2026-10-24
ama.ab.ca2026-10-31
psychologistsassociation.ab.ca2026-11-09

PR value'ya göre sıralı. Birçok alan adı otomatik olarak yenilenir, bu yüzden listeyi düşecek alan adlarının listesi olarak değil, bir izleme listesi olarak görün.

Sorguyu gösterin
SELECT Domain, "Domain expiration date"[:10] AS expires
FROM read_json('websites-ranking-2026-10-16.jsonl.zst', columns = {Domain: 'VARCHAR',
  "Domain expiration date": 'VARCHAR', "PR value": 'DOUBLE'})
WHERE "Domain expiration date"
  BETWEEN CAST(current_date AS VARCHAR) AND CAST(current_date + 30 AS VARCHAR)
ORDER BY "PR value" DESC LIMIT 3;
Websites + Ranking veri seti →
E-posta ve altyapı DNS

Bu alan adlarının DNS'ini kim yönetiyor?

Ücretsiz 10K satırlık önizlemede gerçek çıktı
cloudflare.com2.277 · %25,1
registrar-servers.com704 · %7,7
domaincontrol.com622 · %6,8

Kullanılabilir NS kaydı bulunan alan adlarının payı, ana bilgisayar adının son iki etiketine göre gruplanmıştır.

Sorguyu gösterin
CREATE OR REPLACE MACRO provider(h) AS
  array_to_string(string_split(lower(rtrim(h, '.')), '.')[-2:], '.');
SELECT provider(json_extract_string("DNS records", '$.NS[0]')) AS dns,
  count(*) AS domains, round(100 * count(*) / sum(count(*)) OVER (), 1) AS pct
FROM read_json('dns-2026-10-16.jsonl.zst', columns = {"DNS records": 'JSON'})
WHERE dns <> '' GROUP BY dns ORDER BY domains DESC, dns LIMIT 3;
DNS veri seti →
Satış All data

Hangi şirketler e-posta için Google Workspace kullanıyor?

Ücretsiz 10K satırlık önizlemede gerçek çıktı
edu5.0.bgGoogle
shopping.9guacu.brGoogle
ffe.a.seGoogle

Ücretsiz önizlemede 456 alan adı, MX kayıtlarından okundu. Microsoft 365 için bunun yerine .mail.protection.outlook.com değerini test edin.

Sorguyu gösterin
zstd -dc all-data-2026-10-16.jsonl.zst | jq -r '
  select(any(."DNS records".MX[]?.host;
             ascii_downcase | test("(^|\\.)(google|googlemail)\\.com$")))
  | .Domain' > google-workspace.txt
All data veri seti →

4 · Liste oluşturun

Tam dosyadan veya bir dilimden liste oluşturun

Tam dosya bir elektronik tabloya sığmaz, bu yüzden önce filtreleyin ya da bir dilimle başlayın: tek bir teknoloji, TLD, TLD uzantısı veya ülke ayrı bir dosya olarak, webatla sayfasından veya API'den indirilir. Technologies ya da All data erişiminiz varsa her teknoloji sayfasında kendi dilimi için bir indirme kutusu bulunur.

Tam dosyadan

Tek bir TLD veya tek bir uzantı

jq

TLD, alan adının son etiketidir. TLD uzantısı ise alan adının tam genel uzantısıdır.

# every domain under one TLD (de covers every suffix that ends in .de)
zstd -dc all-data-2026-10-16.jsonl.zst | jq -c 'select(.TLD == "de")' > de.jsonl

# exactly one suffix
zstd -dc all-data-2026-10-16.jsonl.zst | jq -c 'select(."TLD suffix" == "2ix.de")' > 2ix.de.jsonl

# a suffix that equals its TLD (com, de, ac) has no file of its own:
# filter the TLD slice instead
zstd -dc webatla-all-data-ac-2026-10-16.jsonl.zst | jq -c 'select(."TLD suffix" == "ac")' > ac.jsonl
Ücretsiz 10K satırlık önizlemede gerçek çıktı
de.jsonl      224 lines
2ix.de.jsonl   52 lines
ac.jsonl     5463 lines

Tek bir ülkede barındırılan web siteleri, hızlıca

grep + jq

Bir web sitesi, IP adresi olan bir satırdır ve ülkesi sunucunun barındırıldığı yerdir (büyük harfli bir ISO kodu). grep eşleşemeyecek satırları eler, ardından jq kalanları tam olarak denetler.

zstd -dc all-data-2026-10-16.jsonl.zst \
  | grep -F '"Country by IP":"DE"' \
  | jq -c 'select(."IP address" != null and ."Country by IP" == "DE")' > de-websites.jsonl
Ücretsiz 10K satırlık önizlemede gerçek çıktı
de-websites.jsonl: 595 lines, the same as jq alone

Excel veya Google Sheets için CSV olarak dışa aktarın

jq

Excel en fazla 1.048.576 satır gösterir, bu yüzden önce filtreleyin. Latin olmayan adların doğru görünmesi için CSV dosyasını UTF-8 olarak içe aktarın (Data, From Text/CSV).

zstd -dc all-data-2026-10-16.jsonl.zst | jq -nr '
  ["Domain","TLD suffix","HTTP status","Technologies"],
  (inputs | [.Domain, ."TLD suffix", ."HTTP status",
             (.Technologies | if . then tojson else null end)])
  | @csv' > all-data.csv
Ücretsiz 10K satırlık önizlemede gerçek çıktı
"Domain","TLD suffix","HTTP status","Technologies"
"360.0.bg","0.bg",200,"{""HTTP/2"":{""version"":null},...}"
...  10,001 lines

Bir dilimden

Satış

Tek bir pazardaki potansiyel müşteriler

WooCommerce dilimini alın, ardından tek bir ülkeye filtreleyin.

COPY (
  SELECT Domain AS Website, "Country by IP" AS Country
  FROM read_json('webatla-technologies-WooCommerce-2026-10-16.jsonl.zst',
    columns = {'Domain': 'VARCHAR', 'Country by IP': 'VARCHAR', 'PR value': 'DOUBLE'})
  WHERE "Country by IP" = 'DE'
  ORDER BY "PR value" DESC
) TO 'woocommerce-germany.csv';
Ücretsiz 10K satırlık önizlemede gerçek çıktı
Website,Country
ariana.ac,DE
fjak.ac,DE
empower.abudhabi,DE
Ajanslar

Ek satış listesi: WordPress de kullanan HubSpot siteleri

HubSpot dilimini alın, ardından teknoloji yığınında WordPress bulunanları tutun.

COPY (
  SELECT Domain AS Website, "Country by IP" AS Country
  FROM read_json('webatla-technologies-HubSpot-2026-10-16.jsonl.zst', columns = {
    'Domain': 'VARCHAR', 'Country by IP': 'VARCHAR', 'Technologies': 'JSON'})
  WHERE list_contains(CASE json_type(Technologies) WHEN 'OBJECT' THEN json_keys(Technologies)
    ELSE json_extract_string(Technologies, '$[*]') END, 'WordPress')
) TO 'hubspot-on-wordpress.csv';
Ücretsiz 10K satırlık önizlemede gerçek çıktı
Website,Country
ateliercrescendo.ac,US
Satış operasyonları

Bölge başına bir dosya

Bir dilimi sunucu ülkesi başına bir CSV olarak bölün.

COPY (
  SELECT Domain AS Website, coalesce("Country by IP", 'unknown') AS Country
  FROM read_json('webatla-technologies-WooCommerce-2026-10-16.jsonl.zst',
    columns = {'Domain': 'VARCHAR', 'Country by IP': 'VARCHAR'})
) TO 'woocommerce-by-country'
  (FORMAT csv, PARTITION_BY (Country), WRITE_PARTITION_COLUMNS true, OVERWRITE);
Ücretsiz 10K satırlık önizlemede gerçek çıktı
woocommerce-by-country/Country=DE/data_0.csv
woocommerce-by-country/Country=US/data_0.csv
...
Elektronik tabloya sığar mı?Bir Excel sayfasına 1.048.576 satır sığar
HubSpot siteleri 375.063 Tek sayfaya sığar
WordPress siteleri 23.798.524 Filtreleyin veya bölün
All data, tam dosya 420.933.308 Hiçbir tabloya sığmaz

5 · Yükleyin

Postgres, Parquet veya kendi listenizle birleştirme

PostgreSQL

psql

Her satır bir jsonb satırına dönüşür, Technologies üzerinde GIN dizini ile.

psql -c 'CREATE TABLE domains (doc jsonb)'
zstdcat technologies-2026-10-16.jsonl.zst \
  | psql -c "\copy domains FROM STDIN WITH (FORMAT csv, QUOTE e'\x01', DELIMITER e'\x02')"
psql -c "CREATE INDEX ON domains USING gin ((doc->'Technologies'))"
psql -c "SELECT doc->>'Country by IP' AS country, count(*) AS sites FROM domains
         WHERE doc->'Technologies' ? 'WordPress' GROUP BY 1 ORDER BY 2 DESC, 1 LIMIT 5"
Ücretsiz 10K satırlık önizlemede gerçek çıktı
COPY 10000
 country | sites
---------+-------
 US      |   300
 DE      |   110
 CA      |    29

Parquet

DuckDB

Veri tipli sütunlar, Technologies ise bir ad listesi olarak. BigQuery, Snowflake, Spark veya pandas içine yüklenir.

CREATE OR REPLACE MACRO techs(t) AS CASE json_type(t) WHEN 'OBJECT'
  THEN json_keys(t) WHEN 'ARRAY' THEN t->>'$[*]' ELSE []::VARCHAR[] END;
COPY (SELECT "Domain" AS domain, "Country by IP" AS country,
             "PR value" AS pr_value, techs("Technologies") AS technologies
      FROM read_json('technologies-2026-10-16.jsonl.zst', columns = {
        'Domain': 'VARCHAR', 'Country by IP': 'VARCHAR',
        'PR value': 'DOUBLE', 'Technologies': 'JSON'}))
TO 'technologies.parquet' (FORMAT parquet);
Ücretsiz 10K satırlık önizlemede gerçek çıktı
technologies.parquet: 10000 rows
domain · country · pr_value · technologies (list of names)

Kendi listenizi zenginleştirin

DuckDB

Bir yanda sizin CSV dosyanız, öbür yanda dışa aktarma, Domain üzerinden eşleştirilir.

SELECT c.domain, w."Country by IP" AS country, w."Registrar" AS registrar,
       w."HTTP status" AS http, w."Domain creation date"[:10] AS created
FROM read_csv('my-domains.csv') c
LEFT JOIN read_json('all-data-2026-10-16.jsonl.zst', columns = {
    'Domain': 'VARCHAR', 'Country by IP': 'VARCHAR', 'Registrar': 'VARCHAR',
    'HTTP status': 'INTEGER', 'Domain creation date': 'VARCHAR'}) w
  ON w."Domain" = lower(trim(c.domain))
ORDER BY 1;
Ücretsiz 10K satırlık önizlemede gerçek çıktı
domain              country  registrar                    http  created
Tamm.AbuDhabi       AE       ADSIC Registry Operator      200   2018-07-09
easy.ac             US       MarkMonitor Inc.             200   2014-02-27
global.abb          US       CSC Corporate Domains, Inc.  301   2019-10-03

6 · Günlük güncellemeler

Dünden bu yana neyin değiştiğini görün

Her gün yeni bir dışa aktarma gelir. İki günü Domain üzerinden karşılaştırın ve yalnızca değişiklikleri alt sistemlere gönderin. Listeden çıkan alan adlarını görmek için iki dosyanın yerini değiştirin.

COPY (
  SELECT "Domain" FROM read_json('all-active-domains-2026-10-16.jsonl.zst',
                                 columns = {'Domain': 'VARCHAR'})
  EXCEPT
  SELECT "Domain" FROM read_json('all-active-domains-2026-10-15.jsonl.zst',
                                 columns = {'Domain': 'VARCHAR'})
) TO 'new-since-yesterday.csv' (HEADER false);

7 · Sık yapılan hatalar

İnsanların sık takıldığı noktalar

Sütun adları boşluk içerir

Hem SQL'de hem jq'da tırnak içine alın.

jq: ."TLD suffix"SQL: "TLD suffix" = 'com.sa'

DNS Status bir metindir

Mantıksal değer değil, "TRUE" veya "FALSE" metnini içerir, bu yüzden onu metin olarak karşılaştırın.

select(."DNS Status" == "TRUE")

Technologies birkaç biçimde gelir

Adları sürümlere (veya sürüm içeren nesnelere) eşleyen bir nesne, bir ad listesi ya da null. Nesnenin anahtarlarını, listenin öğelerini okuyun, her iki durumda da tek bir liste elde edersiniz.

jq: (.Technologies // []) | if type == "object" then keys else . end

Tam dosyayı asla diske açmayın

Tam All data dosyası sıkıştırılmış halde yaklaşık 34 GB büyüklüğündedir, açıldığında ise birkaç yüz GB tutar. Buradaki her tarifin yaptığı gibi akış olarak okuyun.

İlk satırlara bakın

DuckDB'de yanlış yazılmış bir sütun adı hata vermez, NULL döner.

8 · Sorun giderme

Bir şey ters gittiğinde

BelirtiNeden ve çözüm
Ücretsiz önizlemede zstd: … unsupported formatÖnizleme düz JSONL'dir, sıkıştırılmamıştır. Onu doğrudan jq'ya verin veya ikisini de okuyan zstdcat'i kullanın.
Python, zstd -dc FILE | wc -l komutundan çok daha az satır döndürüyorDosyada çok sayıda zstd çerçevesi var ve yalnızca ilkinden sonra duran bir çağrıyla okundu. Python tarifindeki gibi read_across_frames=True ile stream_reader kullanın.
.TLD suffix için jq: syntax errorBoşluk içeren adları tırnak içine alın: ."TLD suffix"
SQL hata vermeden 0 satır döndürüyorTek tırnak içindeki 'Country by IP' bir metindir, sütun değil. Sütun adları için çift tırnak kullanın.
DuckDB yarıda Expected OBJECT, but got ARRAY hatasıyla duruyorOtomatik şema algılama yalnızca ilk satırlara bakar. Sütunları tanımlayın, iç içe alanları JSON olarak belirtin.
İndirdiğim dosya eksiksiz mi?Dosya eksiksiz açılabildiğinde zstd -tq FILE && echo OK OK yazdırır.

Her tarif tam günlük dosyada da çalışır

Aylık veya yıllık erişim, her gün yeni bir dışa aktarma ve dilimler için bir API. Her hesap ayrıca her veri setinin ücretsiz 10K satırlık önizlemesini indirebilir.