API + MCP
$9/mo
- 10,000 requests / day
- Up to 100 results per page
- 10 API keys
- Full catalog · REST + MCP
Hosted MCP server · REST API
1000 ranked directories — DR, dofollow, price and an honest verdict — as MCP tools your agent can call and a REST API you can script. $9/mo.
claude mcp add --transport http seomade https://seomade.app/api/mcp \
--header "Authorization: Bearer __SEOMADE_KEY__" youFind free dofollow directories for my SaaS.
{ "collection": "saas", "dofollow": true, "free": true, "limit": 4 } agent Start with AlternativeTo (DR 80) and MarketingDB (DR 57) — both free and dofollow. 293 more match if you want a longer list.
Sign in, subscribe for $9/mo, then create a key for REST and MCP.
Pick your tool. Every snippet is ready to paste — no placeholders to fill in.
# Free dofollow directories that suit SaaS
curl -s "https://seomade.app/api/v1/directories?collection=saas&dofollow=true&free=true&limit=10" \
-H "Authorization: Bearer __SEOMADE_KEY__"
# One directory, in full
curl -s "https://seomade.app/api/v1/directories/product-hunt" \
-H "Authorization: Bearer __SEOMADE_KEY__"
# Categories, collections, and your remaining quota
curl -s "https://seomade.app/api/v1/meta" \
-H "Authorization: Bearer __SEOMADE_KEY__" # Keep the key in your shell instead of pasting it every time.
# (No $ in front when you SET it — only when you USE it.)
export SEOMADE_API_KEY="__SEOMADE_KEY__"
curl -s "https://seomade.app/api/v1/meta" \
-H "Authorization: Bearer $SEOMADE_API_KEY"
# To keep it across restarts:
echo 'export SEOMADE_API_KEY="__SEOMADE_KEY__"' >> ~/.zshrc claude mcp add --transport http seomade https://seomade.app/api/mcp \
--header "Authorization: Bearer __SEOMADE_KEY__" {
"mcpServers": {
"seomade": {
"url": "https://seomade.app/api/mcp",
"headers": {
"Authorization": "Bearer __SEOMADE_KEY__"
}
}
}
} const res = await fetch(
"https://seomade.app/api/v1/directories?collection=saas&dofollow=true&limit=5",
{ headers: { Authorization: "Bearer __SEOMADE_KEY__" } },
);
const { total, results } = await res.json();
console.log(total, results.map((d) => `${d.name} (DR ${d.dr})`)); One real request to /api/v1/meta. Uses a single unit of your daily quota.
$9/mo
Base URL https://seomade.app/api/v1 · auth via
Authorization: Bearer or X-API-Key ·
machine-readable index.
| Endpoint | Returns |
|---|---|
GET /directories | a filtered page of the catalog |
GET /directories/{slug} | one directory, in full |
GET /meta | categories, collections, your quota |
POST /api/mcp | hosted MCP — same key, three tools |
/directoriesqname, host or summarycollectiongood · top · saascategorye.g. AI Toolslink_typeDofollow · NofollowpricingFree · Paidmin_dr max_dr0–100dofollow freebooleansquality_tierpremium → skipsaas_fit goaleditorial fitsortrank · dr · name · scorelimit offsetpagingsearch_directoriesShortlist by niche, DR range, dofollow, free/paid or collection.
read-onlyget_directoryThe full write-up for one slug — before your agent recommends it.
read-onlycatalog_metaValid categories and collections, plus your remaining quota.
read-only
The handshake is free — only tools/call spends quota, and it resets at midnight UTC.