TL;DR
OpenSEO is an MIT-licensed SEO platform that positions itself as the open-source alternative to Semrush and Ahrefs. It sits at roughly 16,500 stars and 2,000 forks after being created on February 27, 2026, shipped v0.1.7 on September 2, 2026, and has been climbing GitHub trending through early September. The short version:
- It is not a crawler. OpenSEO is a UI, workflow engine, and MCP server on top of DataForSEO. You bring your own API key and pay per query. Understanding that one fact resolves most of the arguments about it.
- The MCP server is the actual product. ~20 tools covering keyword research, SERPs, backlinks, rank tracking, domain footprints, local/Maps rank grids, and first-party Google Search Console data — callable from Claude Code, Cursor, Codex, and Claude Desktop.
- Nine Agent Skills ship alongside the MCP, so your agent knows how to run keyword clustering or link prospecting, not just which endpoint to hit.
- Self-hosting is genuinely free — Docker or Cloudflare Workers (works on Cloudflare’s free plan). The hosted version is $10/month including $10 of usage, funded by a ~28% markup on DataForSEO calls.
- Real cost math: ~$0.05 per keyword search, ~$0.08 per backlink domain overview, ~$1.09 per ChatGPT brand-visibility check. Ahrefs’ cheapest plan is $129/month.
- The honest catches: Docker self-hosting runs with authentication disabled by default, DataForSEO’s minimum top-up is $50, it’s pre-1.0 with 135 open issues, and the architecture is Cloudflare-shaped in ways that matter if you host elsewhere.
What OpenSEO actually is
The origin story is refreshingly literal. The maintainer, Ben Senescu of Every App, posted in r/TechSEO asking whether an open-source tool wrapping DataForSEO would be useful. People said yes. He posted the working build the following week.
That framing — a wrapper, deliberately — is the key to evaluating it fairly. Ahrefs and Semrush are expensive largely because they operate their own web crawlers and maintain proprietary link indexes. That is a capital-intensive moat, and no MIT-licensed weekend project is going to replicate it.
OpenSEO doesn’t try. It rents the data layer from DataForSEO — which the Product Hunt discussion describes as “the gold standard for backlinks + keyword data outside of Ahrefs and Semrush” — and competes on the two layers above it: workflow design and agent access.
The README’s own pitch is blunt about the target user:
OpenSEO is an SEO tool for the people. If tools like Semrush or Ahrefs are too expensive or bloated, OpenSEO is a pay-as-you-go alternative that you actually control.
The core workflows are keyword research, rank tracking, competitor insights, backlinks, site audits, and AI visibility.
The economics, concretely
This is where OpenSEO makes its strongest argument, so it’s worth putting real numbers on the table. From the project’s own pricing estimator:
| Operation | Approximate cost |
|---|---|
| Keyword search (typical result limits) | ~$0.05 |
| Backlink domain overview (1 year history) | ~$0.08 |
| ChatGPT brand-visibility check | ~$1.09 |
| Rank tracking | fractions of a cent per keyword check |
| Google Search Console data | free — first-party, no credits |
A worked example from their estimator: 100 keyword searches, 20 backlink checks, and weekly rank tracking on 50 keywords lands around $7.12/month of usage — comfortably inside the $10 that the hosted Base Plan already includes.
Against Ahrefs’ entry plan at $129/month, that’s an order of magnitude. But the comparison only holds for a specific user: someone doing bursty, project-shaped research rather than continuous large-scale monitoring. Run enough site audits or ChatGPT brand checks and pay-as-you-go stops being cheap — that’s the nature of metered billing, and it cuts both ways.
Two caveats the marketing page doesn’t lead with:
- DataForSEO’s minimum top-up is $50. New accounts get $1 of free credit to test. So “pay only for what you use” has a $50 on-ramp when self-hosting.
- Self-hosting is free; the hosted version requires an active subscription. Top-up credits roll over indefinitely, but the $10 of included monthly usage resets each cycle.
Getting it running
Two supported paths, and the docs are opinionated about which to pick.
Docker — for trying it on your own machine:
git clone https://github.com/every-app/open-seo
cd open-seo
cp .env.example .env
# set DATAFORSEO_API_KEY in .env
docker compose up -d
It pulls ghcr.io/every-app/open-seo:latest and serves on port 3001 (first start takes 1–2 minutes). Follow along with docker compose logs -f.
Read this before exposing it anywhere. Docker mode sets AUTH_MODE=local_noauth — no auth checks at all, with a local admin user admin@localhost. The compose file binds to 127.0.0.1 by design. The docs are explicit:
Only expose it behind your own auth-protected reverse proxy, tunnel, or private network.
That’s a sane default for local use and a genuine footgun if you casually stick it behind a tunnel. If you want internet-facing multi-device access, the project steers you to the Cloudflare path instead, which provisions Cloudflare Access and gates sign-in on an allowlist:
# .env.selfhost
DATAFORSEO_API_KEY=
ACCESS_ALLOWED_EMAILS=[email protected]
Optional keys unlock the rest: GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET / BETTER_AUTH_SECRET for Google Search Console, and OPENROUTER_API_KEY for SAM, the in-app SEO agent (hidden entirely if unset).
On telemetry: OpenSEO sends anonymized heartbeats — aggregate install/user/project/feature counts against a random install ID, every 5 minutes for the first two hours, then at most daily. The docs state that no URLs, keywords, prompts, emails, or IP-derived location are collected, and idle installs send nothing. Opt out with OPENSEO_TELEMETRY_DISABLED=1 or the standard DO_NOT_TRACK=1, then force-recreate the container. Documented and easy to disable is about as good as telemetry gets.
The MCP layer is the real differentiator
Plenty of projects wrap DataForSEO. What makes OpenSEO interesting in late 2026 is that it was built MCP-first rather than bolting an API onto a dashboard.
Connecting Claude Code is one line:
claude mcp add --transport http --scope user openseo https://app.openseo.so/mcp
Cursor takes the usual mcp.json entry:
{
"mcpServers": {
"openseo": {
"url": "https://app.openseo.so/mcp"
}
}
}
Codex CLI:
codex mcp add openseo --url https://app.openseo.so/mcp
For CI and headless environments, API keys work instead of OAuth:
export OPENSEO_API_KEY=oseo_YOUR_KEY
codex mcp add openseo --url https://app.openseo.so/mcp \
--bearer-token-env-var OPENSEO_API_KEY
Note the security posture the docs state plainly: API keys are personal — anything an agent does with your key acts as you in your workspace. Scope accordingly before wiring one into an unattended pipeline.
The exposed toolset is broader than “keyword lookup.” It covers live Google organic SERPs, exact keyword/page/rank/volume/CPC/intent rows for a domain, SERP competitor comparison across a keyword set, backlink and referring-domain overviews, saved-keyword management, rank tracker configs, and a surprisingly deep local-SEO block — Maps and Local Finder SERPs, Google Business Profile audits, review collection, category-slug lookup, and Maps rank at each point of a geographic grid around a business.
Two tools stand out for agent workflows specifically:
- Google Search Console — performance data (clicks, impressions, CTR, position) plus URL inspection for index status, crawl, and canonical, up to 10 URLs per call. First-party, and it doesn’t consume credits.
- Project context — a shared, free, credit-less store for business description, goals, positioning, writing preferences, competitors, key pages, and a research log. Your agent reads and writes it.
That last one is the quiet good idea. The failure mode of agentic SEO is an agent that re-derives your positioning from scratch on every invocation and produces subtly inconsistent recommendations. A persistent context object that every skill reads from is the right structural fix.
Agent Skills: telling the agent how
MCP gives an agent access to data. It doesn’t teach judgment. OpenSEO ships nine Agent Skills — SKILL.md files following the open Agent Skills standard — for that second half.
The Claude Code and Codex plugins install MCP and all nine skills together, which is the recommended path over adding MCP alone. The skills cover SEO project setup, an SEO coach for people who don’t know which workflow to run, keyword research, competitive landscape mapping, single-competitor analysis, keyword clustering, and link prospecting.
The docs give one piece of advice worth repeating for any agent tooling:
Start with one focused workflow instead of asking your agent to “do SEO” broadly.
Under the hood the repo is a modern Cloudflare-native TypeScript stack: TanStack Start and Router, Drizzle ORM, better-auth, Cloudflare Workers with an Alchemy deployment layer, daisyUI, recharts, and OpenRouter for the AI features. Roughly 17 contributors, 36 documented release notes, and a Playwright e2e suite.
Honest limitations
It’s a client, not an index. No proprietary crawler, no independent link graph. Your data quality ceiling is DataForSEO’s. If you specifically need Ahrefs’ link index, this is not a substitute at any price.
Docker mode ships without auth. Documented, deliberate, and still the most likely way someone gets burned.
It’s pre-1.0. Version 0.1.7, 135 open issues. A commenter in r/SEO noted that “the issue for me was the amount of dependency issues it had at the time” and went with a paid alternative — though that was an earlier build, and the release cadence since has been brisk.
The $50 DataForSEO floor undercuts the pay-as-you-go pitch for anyone wanting to spend $5 and stop.
Cloudflare-shaped architecture. The docs recommend Cloudflare over Railway, Coolify, or Dokploy unless you’re already confident self-hosting, and note that broader platform support is planned “in the next few months.” Workers-oriented dependencies mean this is not a drop-in for an arbitrary VPS today.
Volume without filtering is noise. A Reddit commenter pushed back on 100-related-keyword expansions: “I used a similar keyword expansion tool once and ended up spending more time filtering than actually building pages. If it’s research-only, keep it tight and focus on intent, not just volume.” That’s a critique of the whole category, but it applies here — and it’s exactly where the clustering skill has to earn its keep.
ChatGPT brand checks are the expensive button. At ~$1.09 each, a daily automated check across a keyword set is a real line item. Budget it deliberately.
Who this is actually for
Good fit: indie hackers, founders, and small teams who need real keyword and backlink data a few times a month and can’t justify $129/month. Anyone running an agentic content pipeline who wants their coding agent to query SEO data directly. Teams already pushing volume through DataForSEO — as one Product Hunt commenter put it, self-hosting becomes “a real cost-control lever” when you’re not paying twice for the same data. And anyone who wants to fork it: the README openly invites you to “fork and vibe code your own custom tool.”
Poor fit: agencies needing enterprise reporting, white-labeling, and SLAs. Anyone dependent on Ahrefs’ specific link index. Teams without someone comfortable running Docker or Cloudflare Workers. High-volume continuous monitoring, where metered billing loses to a flat subscription.
The strategic read: OpenSEO is a bet that the SEO tool of 2027 is not a dashboard you log into, but a data layer your agent queries while it writes. On that axis it’s ahead of the incumbents — and it’s the reason a pre-1.0 project cleared 16,000 stars in six months.
FAQ
Is OpenSEO really free? The software is MIT-licensed and free to self-host. The data isn’t — you need a DataForSEO API key and pay them per query ($1 free credit to start, $50 minimum top-up after). The hosted version is $10/month including $10 of usage.
How is it cheaper than Ahrefs? It doesn’t operate a crawler or link index. It resells DataForSEO metered per call, so you pay for the queries you make instead of a flat $129/month for capacity you may not use. Heavy continuous use erodes that advantage.
Can Claude Code actually use it?
Yes — that’s the headline feature. claude mcp add --transport http --scope user openseo https://app.openseo.so/mcp connects it, and the Claude Code plugin adds MCP plus all nine Agent Skills in one install. Cursor, Codex CLI, and Claude Desktop are also supported.
Is self-hosted OpenSEO safe to expose to the internet?
Not the Docker path as shipped — it runs AUTH_MODE=local_noauth with no auth checks. Put it behind your own authenticated reverse proxy or private network, or use the Cloudflare path, which provisions Cloudflare Access with an email allowlist.
Does it send my data anywhere?
Anonymized telemetry only: aggregate counts against a random install ID. The docs state no URLs, keywords, prompts, emails, or location data are collected. Disable with OPENSEO_TELEMETRY_DISABLED=1 or DO_NOT_TRACK=1. Your SEO queries go to DataForSEO, since that’s where the data comes from.
Is it production-ready? For a solo operator or small team, yes with caveats — it’s at v0.1.7 with 135 open issues and active weekly releases. For agency work with client SLAs, wait for 1.0.
Sources
- every-app/open-seo on GitHub — README, license, release history (v0.1.7, September 2, 2026)
- OpenSEO MCP documentation — client setup, full tool list, API key auth
- Docker self-hosting guide — auth mode, telemetry, image pinning
- OpenSEO pricing estimator — per-operation costs and the 28% hosted markup
- r/TechSEO launch thread and Product Hunt discussion — community reactions