OpenSEO: The Open Source Alternative to Semrush That Self-Hosts and Speaks MCP with Your Agents
For years the SEO stack meant one thing: pay Semrush or Ahrefs between $100 and $500 a month, log into their dashboard, and pray you use it enough to justify the bill. OpenSEO (every-app/open-seo, ~3.6k stars on GitHub, MIT, latest release v0.0.21) flips that model on its head. The tool is free and open source. You self-host it, plug in your own data provider, and pay only for what you actually query.
The magic is where the data comes from. OpenSEO doesn’t crawl the web on its own: it’s a clean TypeScript frontend and an API layer wrapped around DataForSEO, a paid data provider. You bring your own DATAFORSEO_API_KEY, new accounts start with $1 in free credit, and top-ups start at $50. From there it’s pay-as-you-go: rank tracking runs about $2 a month, an AI visibility lookup costs around $0.85. No seats, no annual contract, no “contact sales”.
But the reason you should care as a developer isn’t the price: it’s that OpenSEO is built agent-first.
It comes with an MCP server. Point Claude Code or Codex at it and your agent can fetch keyword data, inspect SERPs, compare domains, and review backlinks directly, without switching tabs in a dashboard. Setup is one line:
claude mcp add --transport http --scope user openseo http://localhost:3001/mcp
codex mcp add openseo --url http://localhost:3001/mcp
(Change the URL to https://app.openseo.so/mcp if you use the hosted version, or to your own domain on Cloudflare.)
It comes with agent skills. Seven of them, installable with npx skills add every-app/open-seo: seo-project-setup, seo-coach, keyword-research, keyword-clustering, competitive-landscape, competitor-analysis, and link-prospecting. They’re genuinely reusable workflows: you tell your agent “cluster these keywords” or “map the competitive landscape for this domain” and it runs the skill against live data.
Self-hosting is a two-minute job. For local, single-user use:
cp .env.example .env
# set DATAFORSEO_API_KEY in .env
docker compose up -d
# open http://localhost:3001
Updates are docker compose up -d --pull always. For a team-facing deployment there’s a Cloudflare option (works on the free plan) that puts it on your own domain with auth. The local Docker setup has no authentication by default, so keep it on localhost.
Underneath you’ve got the full suite of workflows: keyword research, rank tracking (desktop + mobile with SERP feature detection), domain insights, backlinks, site audits, plus two additions from the AI era: AI brand visibility tracking and an AI search prompt explorer to see how your site appears inside LLM responses. You can also connect Google Search Console to add your own first-party data.
The honest verdict: OpenSEO isn’t “free SEO”: DataForSEO is still a paid API, and for heavy rank-tracking over hundreds of keywords every day the metered costs can add up. What kills is the fixed subscription and vendor lock-in. If you’re a developer, solo founder, or small team that wants SEO data on demand for your agents without a $2,400-a-year commitment, this is the most interesting thing to happen to the category in a while. And because it’s MIT and TypeScript, if you need a workflow you can fork it and add it.
Are you already running SEO queries inside your agents, or are you still opening the dashboard by hand? Would you self-host this or do you prefer managed?