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
İçindekiler
Biçim
Tam veri seti
Veri setinin tüm satırları
.jsonl.zst
Dilim
Tek 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 önizleme
O 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.
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"])
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';
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;
Ü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;
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;
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;
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
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).
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';
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);
Elektronik tabloya sığar mı?Bir Excel sayfasına 1.048.576 satır sığar
HubSpot siteleri375.063Tek sayfaya sığar
WordPress siteleri23.798.524Filtreleyin veya bölün
All data, tam dosya420.933.308Hiç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
Belirti
Neden 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üyor
Dosyada ç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 error
Boşluk içeren adları tırnak içine alın: ."TLD suffix"
SQL hata vermeden 0 satır döndürüyor
Tek 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 duruyor
Otomatik ş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.
Çerez kullanıyoruz
Sitenin çalışması için gerekli çerezler ve neyin faydalı olduğunu öğrenmek için isteğe bağlı analiz çerezleri kullanıyoruz.
Daha fazla bilgi için: gizlilik politikası.