Bayanat Labs Arabic Web Rights Census
Which Arabic websites tell AI crawlers to stay out? The census reads the machine-readable AI-use signals that the hosts in its list publish: the robots.txt rule for each crawler token it checks, Cloudflare Content-Signal values, TDMRep reservations, IETF Content-Usage values and noai values in X-Robots-Tag or meta robots. As of 31 October 2026, 824 of the 33,985 hosts checked fully block at least one AI-training crawler in robots.txt; among the 31,653 of them from the Common Crawl sample alone, 555 do. 213 block all four of GPTBot, CCBot, ClaudeBot and Google-Extended. 1,511 reserve AI training by at least one signal: a robots.txt block, Content-Signal ai-train=no or a TDMRep reservation. 958 carry Content-Signal ai-train=no, 187 of them inside a Cloudflare managed robots.txt block, and 0 of the 31,520 hosts where TDMRep could be read declare a reservation. The list holds 36,190 hosts: Arabic-language hosts from Common Crawl plus popular domains under Arab and Arabic-script country-code TLDs, taken from the Tranco list. All 36,190 were requested, and unreachable, timed-out and challenged hosts are never counted as allowing anything. A robots.txt allow, or a missing signal, is not permission to reuse a site's content: the census reports signals, not licences.
| Licence | CC0 1.0 (data); CC BY 4.0 (card text, stats.json and charts); Apache-2.0 (code and web app) |
|---|---|
| Version | v0.1.0 · Census 2026-10, version v0.1.0, as of 31 October 2026; the code is tagged on GitHub and not on PyPI yet. |
| Published | |
| Updated | |
| Who it is for | AI-governance and policy researchers and journalists who need opt-out evidence for Arabic websites, corpus builders who honour machine-readable reservations, and Arabic publishers who want to compare their own signals with other sites. |
| Level | Beginner |
Key numbers
Counted by script from the released files. Each key number is read from stats.json in the Hugging Face dataset, which holds every number on the dataset card with the table, row and column it comes from, and pinned to its SHA-256; MANIFEST.json lists every file with its size and SHA-256.
Downloads and identifiers
| Where | What |
|---|---|
| Hugging Face | Dataset on Hugging Face |
| Hugging Face | Look up a domain |
| GitHub | Code and method on GitHub |
| huggingface.co | Exclusion list (CSV) |
| huggingface.co | Rates by crawler, sector and country label (CSV) |
| huggingface.co | Every number on the card (stats.json) |
| GitHub | Census method |
| bayanatlabs.com | The crawler page: user agent and opt-out |
Get started
Load a table with the datasets library, or query it with DuckDB straight from the Hub. The parser and fetcher install from GitHub at the v0.1.0 tag; the package is not on PyPI yet.
from datasets import load_dataset
hosts = load_dataset("Bayanat-Labs/arabic-web-rights-census", "hosts", split="train")
agg = load_dataset("Bayanat-Labs/arabic-web-rights-census", "aggregates", split="train")
pip install "arabic-web-rights-census @ git+https://github.com/Bayanat-Labs/arabic-web-rights-census@v0.1.0"
awrc robots robots.txt --bot GPTBot
What is released
| Part | Licence | In this release |
|---|---|---|
| hosts: one row per listed host of census 2026-10, with the robots.txt rule for each of 26 crawler tokens, Content-Signal, TDMRep and noai values and derived classes | CC0 1.0 | Yes |
| bot_rules: one row per requested host and crawler token, with the matched group | CC0 1.0 | Yes |
| aggregates: rates by crawler, sector and country label, weighted by hosts and by Arabic pages in Common Crawl (Parquet and CSV) | CC0 1.0 | Yes |
| Exclusion list (CSV): hosts that reserve AI training by at least one signal, with the signals found and the time they were read | CC0 1.0 | Yes |
| Provenance ledger (one row per request), crawler token list (bots.yaml) and host-list inputs, including the Common Crawl SQL | CC0 1.0 | Yes |
| Dataset card text, stats.json and charts | CC BY 4.0 | Yes |
| Census code on GitHub: host list, fetcher, robots.txt, TDMRep and Content-Signal parsers, tables and charts | Apache-2.0 | Yes |
| Domain lookup web app on Hugging Face Spaces, interface in English and Arabic | Apache-2.0 | Yes |
| IBM Plex Sans Arabic font in the web app, unmodified (SIL Open Font License 1.1) | SIL Open Font License, copyright IBM Corp. | Yes |
Attribution: Arabic Web Rights Census by Bayanat Labs. Data CC0 1.0; card text and charts CC BY 4.0. https://huggingface.co/datasets/Bayanat-Labs/arabic-web-rights-census
Intended uses
- Measure how many of the listed sites signal an AI-training opt-out, by crawler, sector and country label, weighted by hosts or by Arabic pages.
- Look up the robots.txt rule, Content-Signal and TDMRep values that a host published for each crawler token on the census dates.
- Use the exclusion list as one input when a corpus honours machine-readable reservations of text and data mining rights.
Out of scope
- Treating a robots.txt allow or a missing signal as permission to reuse a site's content: terms of use and licences still apply and were not read.
- Using the exclusion list as a complete register of reservations or as legal advice: it covers only the hosts and signals in this census, at the time they were read.
Rights at a glance
Training, display, redistribution and synthetic-voice use are separate permissions.
| Use | Status | Note |
|---|---|---|
| Training | Allowed | The data are facts read from public policy files and Common Crawl's index, under CC0 1.0; no website content is included. |
| Display | Allowed | Data under CC0 1.0; card text, stats.json and charts under CC BY 4.0 with attribution. |
| Redistribution | Allowed | Data under CC0 1.0; card text, stats.json and charts under CC BY 4.0; code and web app under Apache-2.0; the bundled font under the SIL Open Font License. |
| Synthetic voice | Not applicable | No audio. |
Limitations
- All requests came from one network connection in the United States; some hosts, including some government hosts, may refuse or drop connections from outside their region and appear as unreachable or timed out.
- Unreachable (1,170), timed-out (650) and challenged (385) hosts are reported and never counted as allowing anything; they are left out of every rate.
- Page weights come from one Common Crawl crawl, which does not collect pages from hosts that block CCBot, so blocking hosts are under-represented in the list; the Tranco hosts reduce this bias but do not remove it, and their language was not checked.
- Sector labels are rule-based and are not checked site by site; country labels come from the top-level domain, and hosts under generic top-level domains are labelled gTLD.
- Hosts whose robots.txt request was refused as unauthorised or forbidden (78) are counted as having no robots.txt, as the robots.txt standard provides for client-error replies, and were not contacted again; such a reply may be a block on unknown crawlers rather than a missing file.
- Terms of use, licences and robots.txt comments are not read, and robots.txt bodies are not released: each host row keeps the SHA-256 of the body as served.
Sources and licences
| Source | Licence | Redistributed here |
|---|---|---|
| robots.txt, tdmrep.json and homepage headers of each listed host, requested from 30 to 31 October 2026, at least 5 seconds apart | Facts read from public policy files; robots.txt bodies and page content are not released | No |
| Common Crawl crawl CC-MAIN-2026-43, columnar index (cc-index-table) | Common Crawl terms of use; host and page counts only, no page content | No |
| Tranco list PYK6J | Only a rank bucket is released, never the exact rank | No |
| Crawler operators' documentation and the ai.robots.txt project, for the crawler tokens in bots.yaml | Token names and purposes only; ai.robots.txt is MIT | No |
Each host's robots.txt, /.well-known/tdmrep.json and homepage were requested by the census fetcher with the BayanatLabs-OpenData user agent; the homepage was requested only when robots.txt allowed it, its headers and head were read and its body was dropped. Each host received at most three requests (7 hosts may have received a fourth: 11 of the 1,313 requests made during local network outages ended in a timeout, connection or TLS error rather than at the DNS look-up and may have reached the host), with at least 5 seconds between requests to the same host, measured on the machine's monotonic clock (the ledger records wall-clock times, and 74 gaps read between 4.924 and 5 seconds where the system clock was corrected backwards, at three instants). A host was not contacted again after an access-denied or rate-limit reply, a challenge page or a login redirect, and no challenge was solved. Hosts whose first robots.txt request timed out or failed to connect were requested once more, at least an hour later. Every request is in the provenance ledger with its time, status and SHA-256. The census used its own fetcher (awrc.fetch), not the polite-fetch library described on the crawler page. Where they differ: it requested /.well-known/tdmrep.json without checking robots.txt; it kept cookies a host set in memory for the run and sent them back to that host; it retried a 5xx robots.txt once after 30 seconds; it treated more than five robots.txt redirects as no robots.txt (14 hosts); it followed homepage redirects without reading the target host's robots.txt; and when a certificate check failed it repeated the request once without verification (1,708 requests). Platform subdomains (blog and site-builder hosts) and IP addresses are left out of the list, because their robots.txt is set by the platform and their names can name private people. Related from Bayanat Labs: the crawler page, which states the user agent and how to opt out. Source details
How to cite
Cite as:
Bayanat Labs (2026). Arabic Web Rights Census, census 2026-10 (version 0.1.0), as of 2026-10-31. Bayanat Labs. https://huggingface.co/datasets/Bayanat-Labs/arabic-web-rights-census
No DOI. Cite the URL in the citation above and the date you read it.
@misc{bayanatlabs2026arabicwebrightscensus,
author = {{Bayanat Labs}},
title = {Arabic Web Rights Census, census 2026-10 (version 0.1.0), as of 2026-10-31},
year = {2026},
month = oct,
howpublished = {\url{https://huggingface.co/datasets/Bayanat-Labs/arabic-web-rights-census}}
}
Changelog
| Date | Version | Change |
|---|---|---|
| v0.1.0 | Census as of 31 October 2026: host, crawler-rule and aggregate tables, exclusion list and charts on Hugging Face; domain lookup web app on Hugging Face Spaces; code and method on GitHub. |
Corrections and removal requests
If something in this release should not be there, or is wrong, email hello@bayanatlabs.com. We handle removal requests within 30 days, and platform requests within 24 hours. How removal requests work
Related product: Bayanat Knowledge