A Semrush Alternative for About $5 a Month: OpenSEO on the DataForSEO API
The cheapest Semrush alternative I've found
By Ted Cadet. Updated
The cheapest Semrush alternative I've found is OpenSEO, an open-source SEO app that you host yourself and run on the DataForSEO API. You pay only for the data you use.
My 5 sites, with 368 keywords tracked every week on desktop and mobile, cost about $4.35 a month in rank tracking. The same work on Semrush or Ahrefs costs $139 or $129 a month. This guide shows the numbers, then the setup.
We may earn a commission from some links on this page.
Related guides: digital marketing tools directory.
spent on 5 sites in the first 5 days
a month for the same workload
keywords tracked weekly, desktop and mobile
a month for Semrush or Ahrefs
The short version
- OpenSEO is free and open source. You pay DataForSEO per request instead of a monthly plan.
- For 5 sites and 368 tracked keywords, that is about $4.50 a month against $129 to $139 for the big suites.
- It runs on the Cloudflare free plan, or on your own machine with Docker.
- The AI features need a second key from OpenRouter. Switch the model to Claude Haiku 5.5 to cut that cost.
- Claude can drive it through MCP: research, rank trackers and audits from a chat.
What it costs
5 sites in the first 5 days
Real usage from October 17 to 21, 2026.
I set OpenSEO up on DataForSEO for 5 sites: a marketing knowledge base, a funding directory, a nonprofit education site, a speech-therapy SaaS landing page, and an executive speaking coach.
| Work done | Volume |
|---|---|
| Projects | 5 sites |
| Rank trackers | 5, weekly, desktop and mobile |
| Keywords tracked | 368 (top 30 results for 4 sites, top 10 for 1) |
| Site audits | 8 audits, 1,009 pages crawled, 4 with Lighthouse |
| Keyword research | 5 seed phrases, 527 keyword ideas, for $0.18 |
| Competitor research | Competitor rankings for one site, run through the MCP |
The monthly cost, with the math
Rank tracking is the main repeating cost.
OpenSEO sends rank checks to the DataForSEO standard queue, which costs $0.0006 for the first page of 10 results. Each extra page in the same check costs 75% of that, so a top-30 check costs $0.0015.
| Item | Math | Per month |
|---|---|---|
| Rank tracking, top 30 | 312 keywords x 2 devices x $0.0015 x 52 weeks / 12 months | $4.06 |
| Rank tracking, top 10 | 56 keywords x 2 devices x $0.0006 x 52 weeks / 12 months | $0.29 |
| Site audits | About 1,000 pages x $0.00015 (basic crawl) | $0.15 |
| Total | About $4.50 |
Keyword research and competitor checks add a few cents each time you run them. Lighthouse checks in audits cost extra. OpenSEO's Cloudflare setup works on the Cloudflare free plan, so hosting can cost $0.
Semrush and Ahrefs alternatives: cost for the same work
5 sites and 368 tracked keywords, on each tool's cheapest plan that covers it.
| Tool | Plan that covers 5 sites and 368 keywords | Per month |
|---|---|---|
| Semrush | SEO plan: 5 websites, 500 tracked keywords | $139 |
| Ahrefs | Lite: 5 projects, 750 tracked keywords | $129 |
| Moz Pro | Standard ($99, 3 sites, 300 keywords) plus 2 sites and 200 keywords as add-ons | $139 |
| SE Ranking | Core: 10 projects, 2,000 keywords tracked daily | $129 |
| SpyFu | Basic: 5,000 tracked keywords weekly | $39 |
| Ubersuggest | Individual covers 1 project; Business covers more | $49 |
| Mangools | Plans from Entry to Agency | $29 to $129 |
| Keysearch | Pro tracks 200 keywords, so it cannot cover 368 | Not enough on $48 Pro |
| Similarweb | No public prices; sales quote only | Quote |
| OpenSEO on DataForSEO | Pay per request, no plan | About $4.50 |
Set it up
What you need
- A DataForSEO account. Sign up, then open API Access and click "Send by email". Copy the long "Base64" credentials: that value is your
DATAFORSEO_API_KEY. - A place to run OpenSEO: a free Cloudflare account (recommended), or any machine with Docker.
- Optional: an OpenRouter account for the AI features (see the next part).
Set up OpenSEO on Cloudflare Workers
The setup I use. One command builds it all, including a login gate.
It works on the Cloudflare free plan and adds a Cloudflare Access login page, so only your email can get in. You need Node 22.6 or newer, and R2 turned on in your Cloudflare account (R2 asks for a payment method even on its free tier).
- 1Clone the OpenSEO repo and install it.
- 2Log in to Cloudflare once. When it asks "Customize OAuth scopes?", answer yes and turn on access:write.
- 3Copy the settings template and fill in
DATAFORSEO_API_KEYandACCESS_ALLOWED_EMAILS(your email). - 4Deploy. The command creates the database, storage and login gate, then prints your app URL.
- 5Open the URL, log in with the code Cloudflare emails you, and add your first project.
git clone https://github.com/every-app/open-seo.git
cd open-seo
corepack enable
pnpm install
pnpm alchemy login
pnpm alchemy cloudflare bootstrap
cp deploy/.env.selfhost.example .env.selfhost
# edit .env.selfhost: DATAFORSEO_API_KEY=... and ACCESS_ALLOWED_EMAILS=you@example.test
pnpm deploy:selfhost --yesTo update later, run git pull, pnpm install and the deploy command again. If something fails, open /api/health on your app URL. It reports the configuration and database status.
Set up OpenSEO with Docker
The quickest way to try it on your own computer.
git clone https://github.com/every-app/open-seo.git
cd open-seo
cp .env.example .env
# edit .env: DATAFORSEO_API_KEY=...
docker compose up -d
# open http://localhost:3001The first start takes 1 to 2 minutes. Keep the container running if you want scheduled rank checks; it checks for due work every 5 minutes.
AI features and Claude
AI features need a second key: OpenRouter and Claude Haiku
AI visibility tracking runs on DataForSEO. The AI parts inside OpenSEO don't.
AI visibility tracking (how ChatGPT and other AI tools answer questions about your market) runs on your DataForSEO key. Setup research for a new project, suggested prompts to track and the in-app assistant all need a second key, from OpenRouter. Without OPENROUTER_API_KEY, those parts stay hidden or fail.
- 1Create an account at OpenRouter.
- 2Buy credits. OpenRouter charges a 5.5% fee on each purchase, with a $0.80 minimum, so a $10 top-up costs $10.80.
- 3Create an API key and copy it.
- 4Add the key to
.env.selfhost(Cloudflare) or.env(Docker), and set the model to Claude Haiku 5.5. Then redeploy, or restart the container.
OPENROUTER_API_KEY=sk-or-...
OPENROUTER_MODEL=anthropic/claude-haiku-5.5Haiku is half the price on input and less than half on output. OpenSEO runs Luna at its highest reasoning level, which also bills its reasoning as output tokens, so the real gap per call is larger than the prices show.
Connect OpenSEO to Claude with MCP
Run keyword research, read rank trackers and start audits from a chat.
OpenSEO has an MCP server, so Claude and other AI agents can work with your SEO data. I use it this way, and it is how I ran the competitor research for one of my sites.
- 1In Cloudflare Zero Trust, open Access controls, then Applications, and edit your OpenSEO application.
- 2Under Additional settings, then OAuth, turn on Managed OAuth.
- 3Allow localhost redirect URIs, so desktop and command-line agents such as Claude Code can log in.
- 4Add the MCP server in your agent with the URL
https://YOUR_WORKER_HOSTNAME/mcp.
Make it yours, and know its limits
Extend it: the code is yours
- OpenSEO is open source under the MIT license. Fork it, change it, deploy it with the same command.
- Pick up new releases by fetching from the original repo and merging.
- Some changes need no code: the AI model is one setting,
OPENROUTER_MODEL. - The DataForSEO API covers far more than OpenSEO uses today, such as backlinks, Google Business data and on-page checks, so you can build the report you are missing on the same key.
Limits and trade-offs
- You run it yourself. Updates, settings and errors are your job, with no support team.
- It isn't a full Semrush or Ahrefs clone. Those suites have their own link indexes, traffic estimates and years of history.
- The Cloudflare free plan allows 100,000 Worker requests, 5 million database rows read and 100,000 rows written per day. Past a limit, requests fail until midnight UTC.
- Rendering JavaScript in site audits needs a paid Cloudflare Workers plan.
- DataForSEO requires a $50 minimum top-up, even though monthly use can be under $5.
Common Questions
How much does tracking deeper than the top 10 add to the DataForSEO bill?
Each extra page of 10 results in the same check costs 75% of the first page. In the standard queue a top-10 check is $0.0006, a top-30 check is $0.0015 (2.5 times as much), and a top-100 check is $0.00465 (7.75 times). Track deep only on keywords where page 2 or 3 movement changes a decision.
What does daily rank tracking cost compared with weekly on this setup?
Daily checks cost 7 times as much as weekly ones. My 368 keywords on desktop and mobile cost about $4.35 a month weekly, so daily would be about $30.45. That is still under a quarter of a $129 suite plan, so run daily checks only on the keywords where a day's movement changes what you do.
What happens when the DataForSEO standard queue is slow?
OpenSEO posts rank checks to the standard queue, which DataForSEO prices at $0.0006 per page with a 5-minute average turnaround. OpenSEO polls for results for up to 15 minutes, then sends any checks still missing to the live endpoint, which costs $0.002 per page. Stragglers cost more, but a run never stalls.
Can a client log in and see only their own project?
Not on one deployment. Everyone you allow through Cloudflare Access works in one shared workspace and sees every project. For client-only access, deploy a separate OpenSEO instance per client, each with its own DataForSEO key, so their data and spend stay separate.
What happens if OpenSEO goes over the Cloudflare free-plan limits?
The free plan allows 100,000 Worker requests, 5 million D1 rows read and 100,000 rows written per day. Past a D1 limit, queries return errors until the limit resets at midnight UTC, and stored data is not affected. If you script the MCP heavily or add teammates, watch the daily row counts in the Cloudflare dashboard.
Which MCP calls spend DataForSEO credit?
Calls that fetch new data spend credit: keyword research, live search results, rank checks, audits and AI visibility runs. Calls that read what OpenSEO already stored, such as listing projects, audits, saved keywords or tracker results, cost nothing. Script the reads freely and batch the fetches.
Sources
- [1] OpenSEO on GitHub (MIT license)
- [2] OpenSEO: Cloudflare self-hosting guide
- [3] OpenSEO: Docker self-hosting guide
- [4] OpenSEO: Cloudflare operations (MCP, AI visibility)
- [5] DataForSEO pricing
- [6] DataForSEO Google Organic SERP API pricing
- [7] Semrush pricing
- [8] Ahrefs pricing
- [9] Moz Pro pricing
- [10] SE Ranking pricing
- [11] Keysearch pricing
- [12] Similarweb pricing
- [13] SpyFu plans (TechRadar)
- [14] Mangools plans (CostBench)
- [15] Ubersuggest plans (Capterra)
- [16] OpenRouter model prices
- [17] Claude Haiku 5.5 on OpenRouter
- [18] Cloudflare Workers limits
- [19] Cloudflare D1 limits