IndexNow Server
Tell search engines about new pages the moment they go live, for every site you run, from one dashboard.
Free, MIT licensed and self-hosted. One Node process and one SQLite file. It handles IndexNow keys, sitemap diffing and schedules so you stop pasting URLs into curl.
git clone https://github.com/TheTechBasket/index-now-server
cd index-now-server
pnpm install
pnpm dev # http://localhost:3020Quick with a hundred thousand URLs loaded
The bench script in the repo loads 100,000 URLs across 10 sites, then measures the API one request at a time. These are median times.
- Dashboard load
- 0.57 ms
- median of 50 requests
- One site with its URLs
- 17 ms
- median of 100 requests
- URLs in the test set
- 100,000
- across 10 sites
- Per submit request
- 10,000
- URLs at most, batched for you
Source: bench/results/v0.9.0.json in the repo, node v24.13.1, one request at a time. Hardware was not recorded, so treat the times as a rough guide. The batch size is the IndexNow limit.
What it looks like


What you get
Many sites, one dashboard
Add each site, generate or rotate its IndexNow key, then Submit, Sync, Verify or Delete in bulk across sites.
Sitemap diffing
It fetches your sitemaps and submits only new or changed URLs, in batches of up to 10,000. No more resubmitting a whole site for one new post.
Three modes per site
Manual from the dashboard, scheduled (hourly, every 6 hours or daily), or a webhook:
POST /hook/:siteIdfrom your CMS or build pipeline.Key file helper
Copy or download the exact key file content from the dashboard, then host it at
https://your-domain/<key>.txt. Verify checks that it is reachable.Discord notifications
Optional webhook with a toggle per event and a test button, so you hear about failed submissions without watching the dashboard.
Auth when you want it
A login gate through
ADMIN_EMAILandADMIN_PASSWORD, plus anAPI_TOKENBearer token for the/api/*routes. Skip both on a trusted network.
Let an agent submit URLs for you
IndexNow Server ships an MCP server over stdio. It reads the database directly, so there is no HTTP round trip and no extra port to open.
Eight tools cover the daily work: get_overview, get_site_detail, add_site, update_site, verify_key, submit_urls, sync_sitemap and get_site_urls.
Prefer scripts? Every /api/* route takes the Bearer token, for example curl -H "Authorization: Bearer $API_TOKEN" http://localhost:3020/api/sites.
{
"mcpServers": {
"indexnow": {
"command": "pnpm",
"args": ["mcp"],
"cwd": "/path/to/index-now-server",
"env": { "DATABASE_PATH": "./data/indexnow.db" }
}
}
}Running in a few minutes
- Start it. Run
pnpm installthenpnpm dev, or pull the Docker imageghcr.io/thetechbasket/index-now-server:latest. It listens on port3020and needs Node 22 or newer. - Add a site. Enter the domain, copy the generated key file and host it at
https://your-domain/<key>.txt. - Submit. Press Submit, pick a schedule, or point your CMS or build pipeline at the webhook.
- Go to production. Run
pnpm build, thenpnpm startwith anAUTH_SECRET. The database lives at./data/indexnow.db, so backing up that file backs up everything.
Good to know
- It is version 0.9.0, so expect changes before 1.0.
- IndexNow reaches Bing, Yandex and the other engines that take part. Google does not, so keep your sitemap in Search Console for Google.
AUTH_ENABLED=falseis for trusted networks only.- The MCP server uses stdio, so the agent has to run on the same machine as the database.
Questions
What is IndexNow?
What is IndexNow Server?
Is IndexNow Server free?
What do I need to run it?
Does it work with Google?
How does it avoid resubmitting the same URLs?
Try it on one site first
Issues and stars on GitHub help other people find it.