Your customers expect an AI-blocking category inside your product. We deliver 17,410+ classified domains across 18 categories, in six export formats plus a REST API, updated daily and licensed for OEM redistribution.
Every DNS filter, SWG, and NGFW ships with content categories — gambling, adult, malware, phishing, social media. AI tools are the first major new category since the smartphone era.
Need to block, monitor, or selectively allow AI-tool access across their workforce.
Expect AI blocking as a native category in their existing security stack — no separate point solution.
Require granular control over AI-tool access for compliance and data-protection mandates.
The AI-tool landscape is not a static list of a few dozen services. It spans tens of thousands of domains across chatbots, code generators, image synthesizers, voice cloners, and more — and new domains appear daily as startups launch, established companies add AI features, and open-source projects deploy hosted instances.
Security products vary in how they ingest domain intelligence. We deliver the same classified data as daily exports in six formats plus a REST API — no conversion middleware needed.
| Format | Use Case | Target Product |
|---|---|---|
| JSON | Full metadata per domain | SWGs, endpoint agents, custom apps |
| CSV | Spreadsheet-compatible tooling | Legacy proxies, manual import |
| DNS RPZ | Response Policy Zone files | BIND, Knot, PowerDNS Recursor |
| Hosts | OS-level blocking agents | Endpoint agents, sysadmin scripts |
| EDL | External dynamic list — one domain per line | Firewalls, proxies, NGFWs |
| PAC | Proxy auto-configuration file | Browser and OS proxy settings |
| REST API | Programmatic access to the same data | Any product with an HTTP client |
// JSON format — full metadata per domain { "feed_version": "2.1", "generated": "2026-07-09T06:00:00Z", "total_domains": 17410, "domains": [ { "root_domain": "chatgpt.com", "primary_category": "Text & Language", "is_active": 1, "language": "en", "ai_type": "ai_native", "categories": "Text & Language > General assistants & chatbots" }, { "root_domain": "midjourney.com", "primary_category": "Image & Visual", "is_active": 1, "language": "en", "ai_type": "ai_native", "categories": "Image & Visual > Illustration & character | Image & Visual > Text-to-image" } ] }
RPZ is the most operationally efficient option for DNS resolver vendors. Load the zone file directly into any RPZ-compatible resolver.
RPZ includes wildcards — blocking openai.com automatically covers chat.openai.com, api.openai.com, and any future subdomains.
The resolver enforces NXDOMAIN or redirect actions natively at query time with no parsing needed.
; RPZ zone file — AI Tools Blocklist ; Generated: 2026-07-09T06:00:00Z ; Domains: 17,410+ ; Load this as a response-policy zone in BIND or compatible resolvers $TTL 300 @ IN SOA localhost. root.localhost. ( 2026070901 ; serial (YYYYMMDDNN) 3600 ; refresh 600 ; retry 604800 ; expire 300 ) ; minimum TTL IN NS localhost. ; Text & Language — General Assistants & Chatbots chat.openai.com CNAME . ; block (NXDOMAIN) *.chat.openai.com CNAME . ; wildcard subdomains claude.ai CNAME . *.claude.ai CNAME . gemini.google.com CNAME . bard.google.com CNAME . ; Image & Visual — Image Generation midjourney.com CNAME . *.midjourney.com CNAME . leonardo.ai CNAME . *.leonardo.ai CNAME .
The feed is delivered through a REST API at https://www.aitoolsblocklist.com/api/database/, secured with API-key authentication over HTTPS. Every OEM partner receives a dedicated API key scoped to their license tier.
database_infoJSON metadata — last update time (including a Unix timestamp) and file size, so you can detect changes before downloading.
download_databaseStreams your subscribed database as CSV with columns domain,category,subcategory — initial ingestion and every refresh.
download_categoriesStreams the category taxonomy as CSV (category,subcategory,domain_count) for mapping to your internal categories.
statusJSON status of your API key, plan, and subscribed database — useful for monitoring and health checks.
Include your API key in the X-API-Key header (recommended), or pass it as an api_key query parameter. Keys are long-lived with no forced rotation schedule.
Regenerate keys at any time from the partner dashboard.
The API accepts GET requests over HTTPS only, so keys and data are always encrypted in transit.
# Database metadata — last update time and file size curl -s -H "X-API-Key: YOUR_OEM_API_KEY" \ "https://www.aitoolsblocklist.com/api/database/?action=database_info" # Full feed download — CSV: domain,category,subcategory curl -s -H "X-API-Key: YOUR_OEM_API_KEY" \ "https://www.aitoolsblocklist.com/api/database/?action=download_database" \ -o ai_tools.csv # Filter to a single category client-side after download awk -F',' '$2 == "Text & Language"' ai_tools.csv # Category taxonomy — CSV: category,subcategory,domain_count curl -s -H "X-API-Key: YOUR_OEM_API_KEY" \ "https://www.aitoolsblocklist.com/api/database/?action=download_categories" \ -o ai_tools_categories.csv # API key and subscription status curl -s -H "X-API-Key: YOUR_OEM_API_KEY" \ "https://www.aitoolsblocklist.com/api/database/?action=status"
The API is designed for OEM workloads, not retail API consumers. Each action fits a different stage of your sync architecture.
Load the downloaded CSV into an in-memory set or hash table — local membership checks are faster than any per-domain network call.
download_database — the complete dataset in a single CSV download. Use for initial ingestion and every refresh.
database_info — compare last_updated_unix to your stored checkpoint. The backbone of daily sync operations.
The database_info action is the operational backbone of OEM integration. Poll it, compare last_updated_unix with your stored checkpoint, and re-download the CSV only when the database has actually changed.
Every download is a complete snapshot. Keep your previous CSV and diff the two files locally — the result is three change sets that map cleanly to database operations:
Domains present in the new snapshot but not in your previous copy. Maps to INSERT.
Domains whose category or subcategory column changed between snapshots. Maps to UPDATE.
Domains present in your previous copy but absent from the new snapshot. Maps to DELETE.
The database refreshes daily, so a scheduled database_info check is all the orchestration you need.
database_info returns a small JSON document — polling it costs almost nothing compared to a full download.
The response includes last_updated_unix — a single integer comparison against your stored checkpoint decides whether to download.
Scheduling the check once or twice a day after our daily refresh keeps your product current without wasted bandwidth.
Every download is a full snapshot, so a failed sync can simply be retried — re-downloading always yields the current complete dataset.
database_info reports last_updated and last_updated_unix, so you always know exactly which snapshot you ingested.
#!/bin/bash # OEM sync script — runs daily via cron at 06:30 UTC # Re-downloads the CSV when the database changed, diffs against the previous copy set -euo pipefail API_KEY="YOUR_OEM_API_KEY" API_BASE="https://www.aitoolsblocklist.com/api/database/" STATE_DIR="/var/lib/your-product/ai-feed" LAST_SYNC=$(cat "$STATE_DIR/last-sync.txt" 2>/dev/null || echo 0) # Check whether the database changed since the last sync UPDATED=$(curl -sf -H "X-API-Key: $API_KEY" \ "${API_BASE}?action=database_info" | jq -r '.last_updated_unix') if [ "$UPDATED" -le "$LAST_SYNC" ]; then echo "AI feed unchanged — nothing to do" exit 0 fi # Download the current full snapshot (CSV: domain,category,subcategory) curl -sf -H "X-API-Key: $API_KEY" \ "${API_BASE}?action=download_database" \ -o "$STATE_DIR/feed-new.csv" # Diff domain columns against the previous snapshot touch "$STATE_DIR/feed.csv" # first run: empty previous snapshot tail -n +2 "$STATE_DIR/feed.csv" | cut -d, -f1 | sort > "$STATE_DIR/old.txt" tail -n +2 "$STATE_DIR/feed-new.csv" | cut -d, -f1 | sort > "$STATE_DIR/new.txt" comm -13 "$STATE_DIR/old.txt" "$STATE_DIR/new.txt" > "$STATE_DIR/added.txt" comm -23 "$STATE_DIR/old.txt" "$STATE_DIR/new.txt" > "$STATE_DIR/removed.txt" # Upsert the full snapshot, then drop domains that disappeared category-db-import --category=ai-tools --upsert < "$STATE_DIR/feed-new.csv" category-db-remove --category=ai-tools < "$STATE_DIR/removed.txt" # Promote the snapshot and update the checkpoint mv "$STATE_DIR/feed-new.csv" "$STATE_DIR/feed.csv" echo "$UPDATED" > "$STATE_DIR/last-sync.txt" echo "AI feed sync complete: +$(wc -l < "$STATE_DIR/added.txt") -$(wc -l < "$STATE_DIR/removed.txt") domains" # No separate reconciliation pass needed — every download is a full snapshot, # so any drift corrects itself on the next successful sync
One endpoint, four actions, one CSV schema (domain,category,subcategory). There is very little to break, and existing actions and columns keep their meaning.
New actions, response fields, and expanded categories are added alongside the existing ones. Your parsing logic won't break.
OEM partners embed our feed into products serving thousands of end customers, so it matters where the data comes from.
Two discovery pipelines feed the same daily classification cycle.
Around 300,000 newly registered domains from zone files, CT logs, and registration feeds are checked and classified every day (many turn out to be empty or parked). The pipeline builds on the same 102-million-domain pre-categorized corpus that powers websitecategorizationapi.com. Any domain classified as an AI tool automatically enters the feed.
A dedicated discovery pipeline monitors app directories, product-launch platforms, developer communities, academic repositories, and the open web daily. Candidates are classified into 18 categories with tool name and subcategory.
Dead domains are pruned, aliases and subdomains are resolved, and both pipelines are merged into the same daily export cycle.
| Field | Description |
|---|---|
| root_domain | The registrable domain of the AI tool |
| primary_category | The tool's main category from the 18-category taxonomy |
| is_active | Whether the domain is currently live — dead domains are pruned daily |
| language | The primary language of the site |
| ai_type | Whether the tool is AI-native or an existing product with added AI features |
| categories | Multi-label assignments in Category > Subcategory | ... format across 18 categories and 172 subcategories |
All export formats and the API are regenerated in a single daily cycle — new discoveries, pruned dead domains, and reclassifications land in the next daily export.
Report a misclassification to [email protected] and it is corrected in a subsequent daily export.
This is not a retail API subscription — it is a data-licensing agreement for vendors who embed the feed into commercial products.
For partners who require complete brand separation:
Served from your domain (e.g., feeds.yourproduct.com) with your TLS certificate.
No references to our brand in API responses, documentation, or metadata.
Same domains, classifications, and update schedule — only delivery branding differs.
Volume pricing is based on formats and update frequency — not your customer count. Growth is never penalized.
Integration differs by product architecture. These patterns show how the feed maps onto the most common security product types.
Consume the RPZ format. Load directly into BIND, Unbound, Knot, or proprietary resolvers. Map our 18 categories to your internal IDs, and expose subcategories in dashboards for shadow-AI analytics.
Consume the JSON feed. Load into your URL classification DB alongside existing categories, and leverage primary category, multi-label categories, and active-status flags for granular policy rules.
Consume plaintext or EDL-formatted feeds. Leading NGFW platforms natively support external domain lists, and category-specific feed URLs enable per-category security rules.
Distribute via your existing content-update channel. Enforce at the local DNS resolver, hosts-file, or browser-extension level — JSON provides full metadata for local policy evaluation without network dependency.
A flat domain list tells your product whether a domain is an AI tool. Our enriched feed tells it what kind, whether it is still active, and what language it serves.
A school district can block AI chatbots while allowing AI-powered educational tutoring tools. Flat lists can't make this distinction.
The is_active field marks whether a domain is still live — dead domains are pruned daily, so block rules never bloat with defunct entries.
Filter or report on AI tools by the primary language of the site — useful for regional deployments and localized policy sets.
Many AI tools do more than one thing. The categories field carries every category a domain belongs to, in Category > Subcategory | Category > Subcategory format, across 18 categories and 172 subcategories.
primary_category field still gives you one unambiguous label when your category engine expects exactly one.
The ai_type field distinguishes tools built around AI from established products that added AI features — so administrators can block one without blocking the other.
Roll up blocked queries by category and subcategory to show customers which kinds of AI tools their workforce is reaching for.
We provide a 30-day technical evaluation with full API access, all output formats, and a dedicated integration engineer. Most partners ship the AI-tools category within one release cycle.
Tell us about your security product and integration requirements. We will provide API credentials and a 30-day technical evaluation within 24 hours.