The archive

LibraryRepo of the day10 min read

OpenSEO and the dashboard you barely open

Semrush charges $139 a month plus $45 for every extra login. OpenSEO runs the same six workflows on data you buy by the request, and the honest number is not zero.

SEO dashboard comparing Semrush’s $139 monthly plan plus $45 per user with OpenSEO’s six workflows billed per request.

You can now run keyword research, rank tracking, backlink checks and a full technical audit of your own site out of software you own outright, paying only for the data you actually pull, which for a small business lands somewhere around ten dollars a month. The same six workflows on Semrush's entry plan run $139 a month, plus $45 a month for every teammate who needs their own login, according to Semrush's own pricing page. Call it $2,748 a year for a three person marketing team. What changed is that OpenSEO put an open front end on the same wholesale data those suites have been reselling, and it did it well enough that 11,285 people starred it in five months.

That star count is worth a second of attention. The repo was created on February 27 of this year. It shipped v0.1.4 on August 9, the tenth tagged release since early July, and there were commits landing on it two days ago. This is not a graveyard with a good README.

What is actually in it

Six workflows, and they map cleanly onto what a small marketing team actually does. Keyword research. Rank tracking. Competitor analysis. Backlink investigation. Site audits. And AI visibility, which is the newish job of finding out whether your business gets mentioned when somebody asks ChatGPT for a recommendation in your category.

The license is MIT, copyright Ben Senescu, and I checked the LICENSE file rather than taking the README's word for it. MIT means you can run it commercially, fork it, change it, and never ask anyone. No AGPL asterisk, no source-available license with a clause that bites when you grow.

The piece that separates this from the last dozen open-source SEO tools is that OpenSEO exposes an MCP server. Your SEO data becomes something Claude or Cursor can query directly, alongside a set of packaged skills that walk an agent through the actual tasks. More on why that matters in a minute, because it is the part the coverage keeps burying under the price comparison.

Standing it up, honestly

There are three paths, and they are not equally difficult, so let me be specific about which is which.

The hosted version at openseo.so is $10 a month. If you are reading this as an owner-operator who does not want to think about Docker, that is your answer, and you can skip the next two paragraphs. The project charges a 28 percent markup on the underlying data in exchange for not making you hold an API key.

The Docker path is genuinely simple. Copy the example env file, drop in your DataForSEO credentials, run docker compose up -d, wait a minute or two for the build, open localhost:3001. If you have Docker Desktop already installed, this is twenty minutes including the coffee. If you do not, add an hour. But read the warning in the docs, because it matters: the Docker build runs with authentication disabled. It is meant for your own machine. The documentation says to only expose it behind your own auth-protected reverse proxy, tunnel, or private network, and that is not boilerplate, that is the actual security posture. Anyone who reaches the port is in.

The Cloudflare path is the one for a team, and it is five steps that touch five Cloudflare products: Workers, D1, KV, R2, and Cloudflare Access for the login gate. The deploy script provisions all of it for you, which is genuinely good engineering, but you need Node 22 and pnpm on your machine, and R2 requires a payment method on file even though the whole thing fits inside Cloudflare's free plan. Budget two hours if you have never run a Wrangler deploy, and budget the frustration of the first one failing on a scope you did not grant. One real limitation to know before you commit: everybody on the deployment shares a single workspace, so this is not a tool where the paid-media person gets their own sandbox.

What it actually costs, including the part nobody prices

Here is where "free" stops being free, and the numbers are all on OpenSEO's own pricing page, which I will give them credit for publishing plainly.

OpenSEO does not have its own data. It is a client for DataForSEO, and you bring your own key. DataForSEO is pay-as-you-go, but the minimum payment is $50, so the self-hosted version starts with a fifty dollar float sitting in somebody else's account before you have looked up a single keyword.

Then the metering. A keyword search runs about five cents. A backlink overview for a domain with a year of history runs about eight cents. Rank tracking is nearly free at roughly a quarter of a cent per check, which is how you can track fifty keywords weekly for about fifty four cents a month. Run the arithmetic on a normal month for a small business, a hundred keyword searches and twenty backlink checks and fifty tracked keywords, and you land near seven dollars. Real, and genuinely cheap.

Now the part that will surprise you. An AI visibility check, the one that tells you whether ChatGPT recommends you, costs about $1.09 each. Each. Check twenty prompts once a week and you are at roughly $87 a month, which is inside shouting distance of the Semrush plan you left. Check thirty prompts daily and the metered tool you adopted to save money costs more than any subscription on the market. Pay-as-you-go is a promise about fairness, not a promise about being cheap, and the difference shows up exactly where the newest and most fashionable feature lives.

Hosting itself is close to a rounding error. The Cloudflare deploy fits on the free plan, and if you outgrow it, Workers Paid starts at $5 a month. So the honest all-in for a small team is something like ten to fifteen dollars a month, plus two hours of setup, plus the fifty dollar deposit, plus real discipline about that AI visibility slider.

What running it for a month actually looks like

Setup is the part everybody writes about and the part that matters least, because you do it once. Here is the ongoing shape of it.

You will update often. There have been ten tagged releases since July 6, which is roughly one a week, and on a self-hosted Docker install updating means running docker compose pull && docker compose up -d and hoping nothing in your env file went stale. That is a five minute job, but it is a five minute job somebody has to remember, and on a project moving this fast, skipping three months of releases is how you end up on a version nobody will help you debug. On the Cloudflare path there is a sharper edge: if you edited the Access policy in the Cloudflare dashboard, a redeploy overwrites it unless you took over managing it yourself. Change it in the dashboard, redeploy, lose the change, spend an afternoon confused.

You will hit the credit wall at least once. On the hosted plan, running out of usage does not produce a surprise invoice, it produces errors on the task you were in the middle of, which is the correct design and also deeply annoying on the Thursday you are trying to finish a report. Top-up credits roll over indefinitely, the plan's included credits reset each cycle, so the working habit is to keep a small buffer topped up rather than to run the balance to zero. Self-hosted, the same thing happens at the DataForSEO layer instead, and their cost controls are where you set your ceiling.

You will also notice what does not cost anything. Google Search Console data is free and does not touch your credits, which means the highest-value recurring report in the whole tool, what your site already ranks for and what is slipping, runs at zero marginal cost forever. The metered spend is competitive research and backlinks, the stuff you do in bursts when you are planning, not the stuff you check on a Monday.

And the shared workspace will bother you eventually. One deployment, one workspace, everybody sees everything. Fine for a three person team. Not fine the moment you are an agency running six clients out of one instance and somebody asks why the intern can see the other account's keyword list.

Why this matters to the person actually doing the work

If you are a marketing ops or RevOps person, the subscription was never the expensive part. The expensive part was that the data lived behind a login, which meant every monthly report started with you exporting CSVs and ended with you pasting them into a deck. The suite was a place you had to go.

The MCP server changes the shape of that. The rank data, the keyword data and the Search Console numbers become things an agent can pull on request, which means the report can be written by asking for it rather than by assembling it. Semrush knows this, which is why they sell an MCP connection of their own and charge $20 a month for the Pro Report add-on that white-labels client reporting on top of your plan. The difference is that when your data is behind your own MCP endpoint, the analysis is not limited to the questions the vendor's report builder anticipated.

That is the internal tool you would otherwise have filed a ticket for. Nobody was ever going to prioritize "build us an SEO reporting pipeline" over the revenue integrations, and now you do not have to ask.

What the paid suites still have

The index. That is the whole answer, and it is not a small one.

Ahrefs describes its data on its own pricing page as coming from the world's second-most active crawler and ten-plus years of web-scale data. That is the actual product. OpenSEO does not crawl anything. It queries DataForSEO, which crawls, which means you have not escaped renting data, you have changed which floor of the building you rent on and cut out one landlord's margin. If DataForSEO reprices tomorrow, your ten dollar month becomes whatever they say it becomes, and the MIT license on the front end does nothing about it.

History is the second thing. Semrush sells historical depth by tier, and Ahrefs sells six months, two years, or five years of it depending on what you pay. Your OpenSEO instance knows what you have paid to fetch since the day you installed it, and nothing before that. If your competitive story requires "here is what happened to their traffic over the last three years," you are buying a subscription for a month to get that answer, and that is a fine reason to keep one.

Third, and less obvious: the suites include a lot of things you forgot you use. Semrush's Lead Generation add-on, the agency directory listing, the branded client reporting. If those are load-bearing in how you win work, they are not in this repo and never will be.

Who is holding this up, and where the data lands

The repo lives under the every-app organization, which has four public repositories and 71 followers. The commit history over the past two weeks is dominated by a single account. That is a bus factor of roughly one on a tool with eleven thousand stars, and you should price that in.

The mitigating fact is that the thing you would lose is the front end, not the data. If maintenance stopped tomorrow, your container keeps running, your DataForSEO key keeps working, and MIT means somebody forks it by Friday. Compare that to the failure mode of a venture-funded SEO startup shutting down, where the data and the tool leave together. That is a real structural advantage and it is worth more than the monthly savings.

On data: telemetry ships enabled, and you turn it off by setting OPENSEO_TELEMETRY_DISABLED=1 and recreating the container. Connecting Google Search Console means an OAuth grant into your Search Console property. Neither of those is alarming, both of them are things you should know before somebody in compliance asks.

The dashboard was always the packaging. You were paying $139 a month for a login to answers that cost five cents apiece, and the only reason that arrangement lasted this long is that nobody had built a decent front door to the wholesale side.

Sources

Every claim above traces back to one of these. Go read them yourself.

  1. 01
    every-app/open-seo, open source alternative to Semrush and Ahrefs

    GitHub / github.com / retrieved Aug 11, 2026

  2. 02
    OpenSEO pricing and usage estimator

    OpenSEO / openseo.so / retrieved Aug 11, 2026

  3. 03
    Semrush plans and pricing

    Semrush / semrush.com / retrieved Aug 11, 2026

  4. 04
    Ahrefs plans and pricing

    Ahrefs / ahrefs.com / retrieved Aug 11, 2026

  5. 05
    DataForSEO pricing

    DataForSEO / dataforseo.com / retrieved Aug 11, 2026

  6. 06
    OpenSEO Cloudflare self-hosting guide

    GitHub / github.com / retrieved Aug 11, 2026

  7. 07
    Cloudflare Workers pricing

    Cloudflare / developers.cloudflare.com / retrieved Aug 11, 2026