OpenSEO is the open source Ahrefs with a data bill attached

Contents

OpenSEO is an open source SEO tool for keyword research, rank tracking, backlinks, and site audits. It exposes all of it to your AI agent through an MCP server. The software is free, but the search data is not. Every lookup bills your own DataForSEO key, and the hosted service adds 28 percent.

Key Takeaways

  • OpenSEO covers the Ahrefs jobs most people actually use.
  • A thousand Google results pages cost 60 cents, but the minimum top-up is $50.
  • Hosting with the project costs $10 a month plus a 28 percent data markup.
  • Claude Code and other agents can run the SEO work through MCP.
  • The project is young, so pin a release before you rely on it.

What this open source SEO tool actually replaces

OpenSEO names six workflows, and they map onto the reasons most people open Ahrefs. The list runs keyword research, rank tracking, competitor insights, backlinks, site audits, and AI visibility. The project repository pitches it as an open source alternative to Semrush and Ahrefs. In practice it is a web app you run yourself, with a hosted version at openseo.so for people who would rather not.

AI visibility is the newest of the six and the most interesting. It checks whether ChatGPT and Google AI Overview mention or cite your brand, then lists the pages and domains cited alongside it. A companion Prompt Explorer compares answers across supported models. The big suites added this late and charge extra for it.

OpenSEO web app dashboard showing keyword, rank tracking and site audit panels in a dark sidebar layout
The OpenSEO web app you run yourself
Image: every-app/open-seo

What OpenSEO cannot give you is the archive. Ahrefs and Semrush sell years of crawled link and ranking history they own outright, and OpenSEO buys every answer fresh, one query at a time. If your work leans on “what did this domain’s link profile look like eighteen months ago,” you still need a seat somewhere.

The stated design goal is focused workflows instead of a bloated suite. That reads as a virtue until you need the one report that did not make the cut. OpenSEO is a well-built client for a paid data API, sitting on top of an index it does not own. The code is MIT licensed and written in TypeScript, so forking it and adding your own report is on the table.

ToolPricing modelEntry costHistorical indexRun it yourself
OpenSEOPay per request$0 self-hostedNoYes
AhrefsFixed seat$129 a monthYesNo
SemrushFixed seat$139 a monthYesNo

What OpenSEO costs to run

The software itself costs nothing. It is MIT licensed, and you can run it on your own machine or your own Cloudflare account with no subscription at all.

The bill comes from the data. OpenSEO needs a DataForSEO API key, and you pay DataForSEO directly for every keyword lookup, rank check, backlink pull, and audit crawl. The costs section of the README says the hosted service funds itself by charging 28 percent extra on every request it forwards to DataForSEO. Self-hosting drops that markup, though the underlying rate stays exactly the same.

A hosted subscription runs $10 a month and includes $10 of usage each month, with a free trial worth $0.50 in credits. Google Search Console data does not touch that budget, because it comes from your own account.

OpenSEO’s own pricing calculator puts real numbers on a normal month. Take one business doing 100 keyword searches, 20 backlink checks, and weekly rank tracking on 50 keywords. That basket lands at $7.12, which fits inside the $10 already included. Strip out the 28 percent and the same basket self-hosted runs about $5.56.

Diagram showing a query routed through self-hosted OpenSEO at no markup or hosted OpenSEO at plus 28 percent, both ending at the pay-per-request DataForSEO API
ActionHosted priceSelf-hosted, markup removed
One keyword searchabout $0.05about $0.04
One backlink check with a year of historyabout $0.08about $0.06
One ChatGPT brand visibility checkabout $1.09about $0.85

Ten brand visibility checks in a month cost more than everything else in the basket put together.

What DataForSEO charges per request

Those OpenSEO figures are per action in the interface. Underneath sits DataForSEO’s public rate card, where most line items are a fraction of a cent. When you self-host, these are the prices you pay DataForSEO directly, with no markup in between (verified 2026-07).

What you ask forPrice
One Google results page, standard queue, back in about five minutes$0.0006 , or $0.60 per 1,000
The same page, priority queue, about one minute$0.0012
The same page, live, about six seconds$0.002
Search volume for up to 1,000 keywords in one task$0.06 , or $0.09 live
Ranked keywords, keyword ideas, or competitors, 1,000 rows$0.132 , from $0.012 a task plus $0.00012 a row
Backlinks or referring domains, 1,000 rows$0.06 , from $0.024 a task plus $0.000036 a row
One page crawled in a site audit$0.00015 , or $0.15 per 1,000 pages
The same page with browser rendering and Core Web Vitals$0.0051

A thousand Google results pages cost 60 cents. A backlink pull of 1,000 rows costs six cents. Crawling a 500-page site runs under eight cents, unless you switch on browser rendering, which is 34 times the base rate and turns the same crawl into $2.55.

Two extras catch people out. The depth parameter doubles the SERP price for every extra 100 results, so pulling the top 100 instead of the top 10 is not free. AI Summary results are billed separately at $0.01 a task, which is why brand visibility checks dominate the basket above.

The gap between these cents and OpenSEO’s per-action prices is mostly extra work behind each action. One keyword search in the interface fires several API calls behind the scenes, and the hosted service then adds its 28 percent on top of each one.

DataForSEO’s minimum payment is $50. The “pay only for what you use” pitch still opens with fronting $50, even when your real usage is $6 a month. That $50 buys an enormous number of the requests above, but DataForSEO will not top up an account in smaller amounts, so treat it as the real entry price.

Ahrefs starts at $129 a month and Semrush at $139, whether you log in daily or once a quarter. OpenSEO is close to zero when idle and unbounded when busy. Someone running three sites with weekly rank checks wins easily. At the other end, daily bulk keyword research pushes the per-request model up fast.

The MCP server and the agent skills

OpenSEO exposes an MCP server so an agent can query your SEO data directly instead of you copying numbers out of a dashboard. Wiring it into Claude Code takes one line:

claude mcp add --transport http --scope user openseo https://app.openseo.so/mcp

The exposed tools cover keyword metrics with volume, difficulty and CPC, live Google SERPs, and the keywords a domain already ranks for. They also handle competitor comparison across a keyword set, backlink overviews, saved keywords, and rank tracker positions. Search Console performance and URL inspection come from your own account, so those calls stay free.

On top of the MCP sit agent skills , which are written workflows telling the agent how to run a task end to end. One command installs them:

npx skills add every-app/open-seo --skill '*' --agent claude-code

That gives you seven slash commands: /seo-project-setup, /seo-coach, /keyword-research, /keyword-clustering, /competitive-landscape, /competitor-analysis, and /link-prospecting. The named compatible agents include Claude Code, OpenClaw, Hermes, Cursor, and Codex. The skills themselves are plain text files, so anything that reads a skill file can use them.

The slow part of SEO is the loop: query, read, narrow, query again. An agent can grind through that loop while you do something else, then save the promising keywords back into the project for you to review. Fork the skills and rewrite them to match how you actually work.

Diagram of an agent calling OpenSEO skills, then the MCP server for keyword and backlink data, with results looping back for the next query

An agent holding a DataForSEO key can spend your money in a loop with no malice at all, so set a spending limit in the DataForSEO account panel before you hand the key over.

Self-hosting OpenSEO, and how young it still is

Both supported paths need the DataForSEO key, and there is no demo mode with fake data.

Docker is the recommended start. Copy .env.example, drop in your key, and run docker compose up -d. The app comes up on port 3001 from a prebuilt GHCR image, and the first start takes a minute or two.

That convenience has a cost. Docker mode runs with AUTH_MODE=local_noauth, which means no auth checks at all and a single local admin user. Anyone who can reach the port is inside. Keep it on your own machine, or behind a reverse proxy or tunnel you control.

Cloudflare is the path for team or internet-facing use. A single pnpm deploy:selfhost --yes provisions the D1 database, KV namespaces, R2 bucket, and a Cloudflare Access login gate. That gate is scoped to an email allow-list, which is how a small team shares one install without passing a password around. The project says it works on the free plan. Still, activating R2 requires a payment method on file even inside its free tier, so “free” needs a card.

Telemetry is on by default. It sends anonymized heartbeats with aggregate install and feature counts, and the docs say it never collects URLs, keywords, prompts or emails. Setting OPENSEO_TELEMETRY_DISABLED=1 turns it off.

The version number is still 0.1.x, and four releases from v0.1.0 to v0.1.3 landed inside two weeks. The repository shows 18 contributors and 39 merged pull requests, against 46 pull requests still open and 23 open issues. More contributions are waiting for review than have ever landed, which is what a repository looks like shortly after it gets popular.

Pin an image tag with OPEN_SEO_IMAGE instead of tracking latest, and read the release notes before you upgrade. Keep it off client work until it reaches 1.0. The project runs a Discord where breaking changes tend to surface before they reach the release notes.