Urlgate

Block time-wasters and adult sites — and force SafeSearch so Google Images, Bing, and YouTube can’t be used to slip past the filter.

List size: 7.4M · updated 2026-08-06 02:29 UTC

Features, public APIs, and how it fits — below

Built for filtering that actually sticks

Lists alone miss the obvious loophole: a kid searches Google Images for porn. Urlgate locks SafeSearch and YouTube Restricted Mode at the DNS layer — on by default — and offers the same policy to WebViews over JSON.

Force SafeSearch — the loophole closer

Turning this on (default for every new filter) rewrites Google — including Images — Bing, DuckDuckGo, and YouTube to their official safe / restricted endpoints. The child cannot disable it in browser settings. Toggle it per filter if you ever need the open web for an adult device — that same toggle drives the per-filter Navigate API.

Mega-list intelligence

Millions of domains across social, adult, gambling, games, ads, and more — with a time-waste score for child-mode decisions.

Your own filters

Sign in and create filters for each device or household. Choose categories, SafeSearch, and exceptions — different rules per kid if you want.

Works on phones & Wi‑Fi

Each filter gets an Android Private DNS hostname and a private DoH link. Home network can use a household default when server DNS is on.

Navigate for WebViews

POST a URL, get the URL to load — open default (score > 6 + SafeSearch) or per-filter with the same token as Android / DoH.

Public lookup API

GET /api/v1/lookup?url=… — same mega-list verdict as the checker above. No API key. CORS open.

Changes kick in fast

Allowed answers expire within about a minute, so tweaking a filter doesn’t leave kids stuck on an old allow for hours.

Public APIs

Two open JSON surfaces — no API key, CORS-friendly. Lookup classifies a host; navigate returns the single URL a WebView should load.

Lookup — mega-list check

Same fields as the homepage checker: verdict, time_waste_score, categories, sources, host, matched_host.

curl -s 'https://urlgate.0xbase.eu/api/v1/lookup?url=https://tiktok.com' | jq .

curl -s -X POST https://urlgate.0xbase.eu/api/v1/lookup \
  -H 'content-type: application/json' \
  -d '{"host":"tiktok.com"}'

Request {"url":"…"} → response {"url":"…"}. Always loadUrl(response.url). Fail open if the call errors.

Open default

POST /api/v1/navigate — SafeSearch always on; block when time-waste score > 6.

Per-filter

POST /api/v1/navigate/<token> — same token as Android / DoH; your category ticks; SafeSearch only if that filter has it on.

# Open default — SafeSearch always; block if score > 6
curl -s -X POST https://urlgate.0xbase.eu/api/v1/navigate \
  -H 'content-type: application/json' \
  -d '{"url":"https://www.youtube.com/watch?v=abc"}'
# → {"url":"https://restrict.youtube.com/watch?v=abc"}

# Per-filter — same token as Android hostname / DoH
curl -s -X POST https://urlgate.0xbase.eu/api/v1/navigate/<token> \
  -H 'content-type: application/json' \
  -d '{"url":"https://tiktok.com/@x"}'
# → {"url":"https://urlgate.0xbase.eu/blocked?detail=…"}  when that filter blocks social

Full decision order, block-page URL, and authenticated check API in the docs.

How it fits together

At home, point devices at your filters so blocked sites never resolve. In-app, ask navigate before the WebView loads. The Vig can still call the keyed check API for classify.

  1. 01 Sign in, create a filter (SafeSearch on by default), copy its Android hostname, private DNS link, or Navigate API URL — one token powers all three.
  2. 02 Paste into the phone’s Private DNS / secure DNS settings, or point home Wi‑Fi DNS at Urlgate when enabled on the server. For WebViews, POST the URL to navigate first.
  3. 03 Blocked sites go nowhere (or to the block page in-app); Google/YouTube stay in safe mode when SafeSearch is on; everything else resolves through the upstream resolver.