
OpenSEO -- a self-hostable SEO dashboard and MCP server: keyword research, rank tracking, backlinks, site audits and AI-search visibility, all reading from the DataForSEO API.
Alternative to: Ahrefs Lite, $129/mo list, for ONE user, 750 tracked keywords updated weekly, and 6 months of historical data. Semrush's SEO plan, $139/mo billed monthly or $117.33/mo billed annually, for 500 keywords tracked daily. Extra Ahrefs seats are $40/mo, capped at two.
Cost to run: not free. Self-hosted you pay DataForSEO directly, per call, with a $50 minimum top-up. Hosted is $10/mo including $10 of usage, at a flat 28% premium on every DataForSEO request.
Licence: MIT, © 2026 Ben Senescu. Free for commercial use. No enterprise modules, no licence keys anywhere in the tree.
Runs on: Docker (linux/amd64 and linux/arm64), Cloudflare Workers on the free plan, or hosted at app.openseo.so.
Requires: a DataForSEO API key, always. Optionally an OpenRouter key for the in-app agent, and Google Search Console or Analytics OAuth credentials.
Traction: 13,307 stars · 1,549 forks · 33 watchers · 18 contributors · 483 commits on main · 43 open issues · 65 open / 91 closed pull requests.
Liveness: very live -- 79 commits in the last 30 days, v0.1.6 released 19 August, last commit 23 August, and the GHCR image carries a tag matching that commit.
Maturity: v0.1.6. Pre-1.0, and the version number is the only warning the project gives.
Links: repo · openseo.so · Show HN, 2 points, zero comments
Figures as of 24 August 2026.
What it does
OpenSEO is a dashboard for the six jobs an SEO tool is bought for: finding keywords, tracking where you rank for them, looking at who links to whom, crawling your own site for technical faults, watching competitors, and checking whether ChatGPT and its rivals mention your brand.
It also ships an MCP server, which is the part that is actually new. Point Claude Code or Codex at it and the agent can run keyword research, pull competitor data and read your Search Console numbers directly, then you look at the results in the app. The project ships pre-built agent skills for this and expects you to write your own.
The data does not come from OpenSEO. It comes from DataForSEO, a pay-as-you-go SEO data vendor that OpenSEO has no ownership of. The maintainer said so himself when he posted the project to Hacker News in April:
"It's a user friendly UI wrapping the DataForSEO API which has high quality SEO data for keywords, backlinks, AI SEO and competitor research. Instead of paying $100+ per month, you buy DataForSEO credits and pay only for usage."
That is the correct description and the whole basis of the comparison below.
What it replaces, and what that costs
Ahrefs Lite -- $129/mo list price. One included user. 750 tracked keywords, updated weekly, not daily. 1,000 credits per user per month. Six months of historical data. Five projects of unverified ownership. Additional seats $40/mo each, maximum two. Ahrefs advertises up to 17% off for annual payment; the per-year figure is not published on the pricing page, so at list and billed monthly that tier is $1,548/yr.
Semrush's SEO plan -- $139/mo billed monthly, $117.33/mo billed annually, which is $1,407.96/yr. 500 keywords tracked daily. Additional users from $45/mo. Above it sit Starter at $199/mo, Pro+ at $299/mo and Advanced at $549/mo.
OpenSEO -- metered, and it tells you its margin. The README states the hosted model in one sentence: "The way the hosted service makes money is by charging 28% extra for every request we make to DataForSEO." That number is not marketing copy. It is a constant in the pricing page's source, on line 25 of `web/src/routes/_marketing/pricing.tsx`:
`const MARKUP = 1.28;` // OpenSEO's flat 28% premium over raw DataForSEO cost
Neither Semrush nor Ahrefs publishes what its data costs it to acquire. This one publishes the multiplier and the arithmetic that follows from it, in a file anyone can read. The same file carries the raw DataForSEO rates it was built against, commented as verified against live prices in July 2026:
rank check, one device, top 40 results: $0.00195
keyword research, a 150--300 result Labs query: $0.030--$0.048, and the estimator uses the $0.039 midpoint
backlink domain overview with one year of daily history: $0.061176
AI-citation scan, per platform: $0.85
Take Ahrefs Lite's own limit -- 750 keywords, checked weekly -- and add 40 keyword searches and 10 domain overviews a month:
3,259 rank checks × $0.00195 = $6.36
40 keyword searches × $0.039 = $1.56
10 domain overviews × $0.061176 = $0.61
$8.53/month of DataForSEO spend, self-hosted. About $102 a year.
Hosted, the same month bills at 1.28× that, so about $10.91, of which the $10 plan fee covers $10.
Set that against $1,548/yr for Ahrefs Lite and $1,407.96/yr for Semrush.
Three things make that comparison honest rather than flattering.
The first is that for most people this is an avoided cost, not a saving. If you are not paying Semrush today, adopting OpenSEO does not stop a bill. It puts data in front of you where there was none. Only someone currently paying Ahrefs can subtract.
The second is that the workflows overlap and the indexes do not. Ahrefs crawls the web itself; its backlink data is its own asset. DataForSEO is a different source with different coverage. Ahrefs Lite also includes Content Explorer and Site Explorer, which have no counterpart here. You are buying the same jobs done against different data, not the same product cheaper.
The third is that $8.53 is not the entry price. $50 is. DataForSEO's minimum top-up is $50, and a new account carries $1 of free credit to test with. The hosted free trial is $0.50 of credits, which is ten keyword searches.
And the AI Visibility feature is the one that will actually cost you money. At $0.85 raw per platform, a full scan across ChatGPT, Claude, Gemini and Perplexity is $3.40 self-hosted or $4.35 hosted. Run that weekly and it is roughly $18.91/month hosted -- more than every other feature in this entry added together.
Every figure in this section comes from the project's own published rates and its competitors' own pricing pages. I did not meter a live account.
Is it still alive?
Yes, emphatically, and by one person.
483 commits on main since the first public commit on 27 February 2026. 441 of them -- 91.3% -- are Ben Senescu's. 79 commits landed in the last 30 days. Thirty tagged releases from v0.0.6 to v0.1.6, the most recent on 19 August. The last commit was 23 August.
The artifact ships. The GHCR registry carries 184 tags for `ghcr.io/every-app/open-seo`, the `latest` manifest is a real multi-architecture index covering linux/amd64 and linux/arm64, and there is a tag named `sha-c469a48` matching the current head of main. CI publishes an image per commit and the images are pullable.
Issues get answered. Issue #183 ran to 22 comments before it was closed on 8 August; #190 has 17 comments and is still open. Maintainer-closed issues carry `good first issue` and `status:ready` labels. This is not a repo where filing something sends it into a void.
Trendshift records it hitting #2 TypeScript Repository Of The Day and #6 Repository Of The Day on 20 July 2026, and #18 Repository Of The Week.
The one thing that looks like decay is a policy. There are 65 open pull requests. That is not neglect. On 11 August 2026, in commit `0a11839`, the maintainer added a section to the contributing guide headed "Why aren't we accepting PRs?" and answered it:
"Short Answer: AI & Security. I love using AI to write code as much as anyone. But, it makes it very challenging to assess how much thought and effort went into external pull requests... Additionally, as OpenSEO becomes more popular, I'm concerned about malicious contributors attempting to sneak in code that slips through review."
He is explicit that PRs are still welcome as proof of concept and simply will not be merged. Issues are the requested contribution route, and the repo ships a skill to help you write one.
The change is visible in the commit log. In July, 24 commits came from outside contributors. The last outside code commit merged on 30 July. The four external commits since then are all from one contributor and are all marketing-site content, not application code.
What people say
The community signal is thin in a way worth naming.
The Show HN did nothing. Posted in April by the maintainer under "Show HN: Open-source Semrush alternative just passed 1.6k stars," it scored 2 points and drew zero comments. The project has since added roughly 11,700 stars. Whatever is driving that, it is not Hacker News.
The sharpest voice is a paying customer, in issue #234, opened 18 August and still without a reply six days later. He bought the $10 hosted plan on 9 August and found the credits gone by the 18th:
"This being shared open-source project and implying that it has no hidden charges. Credit feature where you are not made informed or have any usage metric to plan your queries/research. A small notification appears beside header and no further explanation. only pay us money. This is seen as dishonest money grabbing schema. Best of luck, nonetheless."
That is a complaint about in-product transparency, not about the published price, and both halves of that are true at once. A project that puts its exact margin in a source file also shipped a plan where a customer could not see his own burn rate.
A security report, issue #233, opened the same day, is the most useful thing in the tracker:
"When a user creates an MCP API key, the full key is shown as plain text and can be captured by PostHog session replay... Keys do not expire by default, so one stays valid until it is revoked."
The reporter also noted the repo has GitHub private vulnerability reporting disabled. There is no `SECURITY.md` in the tree; I checked. A fix arrived the next day as community pull request #236. Under the policy above, it is still open.
Reddit is blocked from the research sandbox, so no vote counts from it are claimed. GitHub discussions are not enabled on this repo, and the project's community lives in a Discord I did not join.
The catch
It is a front end for someone else's API, and that is a dependency, not a detail. If DataForSEO changes its rates or its terms, OpenSEO's entire economic argument moves with it and there is nothing the maintainer can do about it. You are not escaping a vendor; you are switching to a cheaper one you have never heard of and hosting the dashboard yourself.
The DataForSEO links carry an affiliate parameter. `?aff=255379` appears on five links across the README, the API-key doc and the self-hosting docs. It is visible in the URL and disclosed nowhere in prose. DataForSEO runs a normal affiliate programme and this is a normal use of it; the entry notes it because the entire value proposition points at one vendor and the pointer is monetised.
One maintainer, 91.3% of the commits, and no merge path for outside code. The bus factor is one, and it is one on purpose. That is a defensible call given what AI-written pull requests have done to maintainer time this year, and it is stated openly rather than hidden behind an unmoderated backlog. It still means the security fix in #236 waits on the same person as everything else.
Pre-1.0 with real bugs in the open tracker, including a self-hosting deploy that removes a hand-attached custom domain, and a hosted site audit that fails partway and charges for the attempt. These are reported caveats. I have not run it.
Nothing here is a saving unless you are cancelling something.
My read
I don't pay for Semrush or Ahrefs. We work with an SEO agency for the main work, and for the smaller projects I've been winging it, because $129 a month to check keywords for a side project is an easy no.
So let me be exact about what this would do for me: it would not reduce a single invoice I currently pay. The agency bill doesn't move. What it does is put real data underneath the projects where I currently have none, for something like ten dollars instead of a hundred and thirty. That's not a saving. That's the difference between guessing and not guessing, and it happens to cost about what a sandwich costs.
I'm going to start on the hosted plan, and I'm going in with my eyes open about issue #234 -- I'd rather know the credit meter is easy to blow through before I hit it than after. If I end up wanting to change how it works, the whole point is that the MIT licence and a Docker image are sitting right there.
The MCP is the part I actually care about. Handing an agent real keyword and Search Console data instead of letting it invent plausible-sounding advice is the first version of this idea I've seen that isn't a demo.
If it survives that, there's a field report in it.
Credits
Maintainer: Ben Senescu (@bensenescu on GitHub, @bensenescu on X), Boston, MA, under the Every App organisation (everyapp.dev).
Contributors who shipped in the 30-day window: Jeremy Rivera, Amine Benboubker, Timur Isachenko, Nordalux.
Voices quoted: Ben Senescu, on Hacker News and X. ajahi, issue #234. adamoakleyew, issue #233.
Data sources: the repository itself, cloned and read directly. ungh.cc for star, fork and watcher counts. The GitHub Container Registry API for image manifests and tags. The Hacker News Algolia API. Trendshift, repository 22289. ahrefs.com/pricing, semrush.com/prices and openseo.so/pricing for list prices.

