BYTETOOLS

FilterLists API

Free FilterLists API with no key: a catalogued directory of thousands of adblock, DNS and firewall filter lists with syntax, licence, language and maintainer metadata. Tested example included.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the FilterLists API?

FilterLists is a free, key-free API cataloguing the filter lists used by ad blockers, DNS sinkholes and firewalls. It provides structured metadata for thousands of lists — syntax, licence, language, maintainer, tags and source URLs — as a machine-readable directory.

Content-blocking filter lists are scattered across GitHub repositories, personal sites and forum posts, in a dozen mutually incompatible syntaxes. FilterLists is the index nobody else maintained: a single catalogue that records, for every known list, what syntax it uses, who maintains it, what licence it carries and what it targets.

The design decision worth understanding is that the catalogue is heavily normalised. Rather than embedding names, the list records carry `licenseId`, `syntaxIds`, `languageIds`, `tagIds` and `maintainerIds` pointing into separate lookup endpoints. That keeps the main response compact but means a useful integration fetches `/licenses`, `/syntaxes`, `/languages`, `/tags` and `/maintainers` once, caches them, and joins locally. Building against the ids without the lookups gives you numbers instead of information.

Quick facts

Base URL
https://api.filterlists.com
Authentication
No API key or account. The catalogue is open source and community-maintained.
Rate limit
No published limit. The catalogue changes slowly, so cache it for days rather than seconds.
Pricing
Free and open source.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the FilterLists API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Fetch the catalogue of filter lists

GET https://api.filterlists.com/lists

curl
curl 'https://api.filterlists.com/lists'
JavaScript (fetch)
const res = await fetch("https://api.filterlists.com/lists");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.filterlists.com/lists", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
[
  {
    "id": 1,
    "name": "AdGuard Japanese filter Plus",
    "description": "This complements AdGuard Japanese filter and mainly consists of 1) additional generic rules to counter circumvention ads and anti-adblock, and 2) specific rules to address sites not addresed in the Japanese filters.",
    "licenseId": 4,
    "syntaxIds": [
      4
    ],
    "languageIds": [
      73
    ],
    "tagIds": [
      2
    ],
    "maintainerIds": [
      150
    ]
  },
  {
    "id": 2,
    "name": "Mute",
    "description": "Mute is an AdBlock Plus filter for user comments. In the same way that AdBlock hides ads, AdBlock can use this filter to hide user-generated comments, allowing you to browse the Internet with less stupidity clawing at your eyeballs.",
    "licenseId": 2,
    "syntaxIds": [
      3
    ],
    "languageIds": [],
    "tagIds": [
      4,
      15
    ],
    "maintainerIds": [
      3
    ]
  },
  {
    "id": 3,
    "name": "MoaAB: Mother of All AD-BLOCKING",
    "description": "Hosts file to block advertisements and trackers designed for Android",
    "licenseId": 3,
    "syntaxIds": [
      1
    ],
    "languageIds": [],
    "tagIds": [
      2,
      3,
      36
    ],
    "maintainerIds": [
      4
    ]
  },
  {
    "id": 4,
    "name": "Hosts Blocking",
    "description": "Hosts file blocking known malware, spyware, virus, and shock sites",
    "licenseId": 2,
    "syntaxIds": [
      1
    ],
    "languageIds": [],
    "tagIds": [
      6
    ],
    "maintainerIds": [
      5
    ]
  },
  {
    "id": 5,
    "name": "Message \"Seen\" Remover for Facebook",

Parameters

ParameterTypeRequiredDescription
(lists)path segmentOptionalThe main catalogue endpoint. Takes no parameters — it returns everything.
(lists/{id})path segmentOptionalOne list expanded with its full detail, including source URLs and update cadence. 1
(licenses)path segmentOptionalLookup table resolving `licenseId`. Crucial — some lists forbid commercial redistribution.
(syntaxes)path segmentOptionalLookup resolving `syntaxIds` to formats such as Adblock Plus, hosts or dnsmasq.
(languages / tags / maintainers)path segmentOptionalThe remaining lookup tables the id fields reference.

Response fields

idinteger
List identifier, used to fetch the expanded record with its source URLs.
namestring
List name as published by its maintainer.
descriptionstring
What the list targets and how it complements others — often the only place this is written down.
licenseIdinteger
Points into `/licenses`. Resolve it: some lists explicitly forbid commercial redistribution.
syntaxIdsarray
Points into `/syntaxes`. A list is only usable by a blocker that understands its syntax.
languageIdsarray
Points into `/languages` — many lists target a specific regional ad ecosystem.
tagIdsarray
Points into `/tags`, covering what the list blocks: ads, tracking, malware, social.
maintainerIdsarray
Points into `/maintainers`, which carries contact and funding details.

What you can build with the FilterLists API

  • Build a filter list picker for an ad blocker or DNS sinkhole
  • Audit which lists a deployment uses and under what licences
  • Discover regional lists appropriate to a user's language
  • Research the content-blocking ecosystem and its maintainers

Common errors and how to fix them

Only numeric ids in the response

Not an error — the catalogue is normalised.

Fix: Fetch `/licenses`, `/syntaxes`, `/languages`, `/tags` and `/maintainers` once, cache them, and join locally.

404

Unknown list id.

Fix: Ids come from the catalogue endpoint. They are stable, but lists are occasionally retired.

No source URL in the list record

The summary record omits it.

Fix: Fetch the single-list endpoint with the id to get source URLs and update cadence.

FilterLists API — frequently asked questions

Is the FilterLists API free?

Yes, free with no API key or account. The catalogue is open source and community-maintained.

Why does the response only contain numeric IDs?

The catalogue is normalised to keep responses compact. Resolve `licenseId`, `syntaxIds`, `languageIds`, `tagIds` and `maintainerIds` against the corresponding lookup endpoints — fetch them once and cache, since they change rarely.

Does it host the filter lists themselves?

No, it catalogues them. The single-list endpoint gives you the maintainer's own source URLs, which is where the actual rules live. FilterLists is the index, not the mirror.

Do I need to check filter list licences?

Yes, and it is the reason `licenseId` exists. Filter lists carry a range of licences and some explicitly forbid commercial redistribution, so resolve the licence before bundling any list into a product.

Tools that pair with this API

FilterLists is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.