Self-hosted SEO tools: what exists and what each one does
The open-source SEO tools you can run yourself, licences checked, with what each needs and where its data comes from. Hosting the app isn’t hosting the data.
Running your own SEO tool appeals for good reasons: no fee per site, nothing leaves your servers, and your history stays yours. But it’s easy to expect more than self-hosting can give. An SEO tool is two things, the app and its data, and you can host only the first.
We publish one of the tools below, Owlseen. It isn’t released, so it’s on the list only so you know where it stands.
The projects
Licences and last activity are as GitHub reports them, and what each does is from its own README. All checked on 6 November 2026. Things change quickly, so check before you commit.
| Project | Licence | Built with | Job | Its data comes from |
|---|---|---|---|---|
| OpenSEO | MIT | TypeScript | Keywords, rank tracking, competitors, backlinks, audits, with an MCP server | A DataForSEO API key you pay for |
| SerpBear | MIT | Next.js, SQLite | Rank tracking with email alerts | Scraping services or your own proxies, plus optional Search Console and Google Ads |
| SEOnaut | MIT | Go, MySQL | Crawl and audit a site | Its own crawler |
| SiteOne Crawler | MIT | Rust | Command-line crawl and audit, reports | Its own crawler |
| Unlighthouse | MIT | Node | Lighthouse across a whole site | Lighthouse, run from your machine |
| Lighthouse CI | Apache-2.0 | Node | Lighthouse on every commit, with an optional server for history | Lighthouse, run in your CI |
| Owlseen | AGPL-3.0, planned | Next.js, Postgres | Search Console and Bing figures, rank tracking and indexing across sites | Your Google and Bing accounts. Not released |
Two others you’ll hear about. Screaming Frog’s SEO Spider isn’t open source, but it does run on your own machine: free up to 500 URLs, with a licence at £199 a year, as listed on 6 November 2026. And Google’s Lighthouse itself, under Apache-2.0, is what several of these wrap.
Where the data really comes from
This is the part most comparisons skip. Whatever you host, the figures come from one of four places.
Your own crawl. A crawler you run can check your own pages fully and for free. It’s the part that self-hosts best. SEOnaut and SiteOne do this.
Google’s and Bing’s APIs, for your own sites. Clicks, impressions and positions come from Search Console’s API, with its limits, and it only covers sites you’ve verified. It’s free, and no self-hosted tool gets more from it than any other.
Scraping results pages, or paying someone who does. To see your rank at a moment, in a place, for any query, someone must fetch the results page. SerpBear’s README lists the services it works with, and some of those are marked as no longer working, which tells you how fragile that layer is. Check Google’s terms before you run your own.
Google’s official route is closing too. Its Custom Search JSON API is closed to new customers and will be discontinued on 1 January 2027, so don’t build on it.
A third-party database. Search volumes, competitors’ backlinks, competitors’ rankings: no single server of yours can produce those, since they need a crawl of the whole web. OpenSEO’s answer is to bring your own DataForSEO key and pay per use. It’s a sensible design, but the bill is yours and depends on your volume.
So decide what you actually need. If it’s your own sites’ performance and health, APIs and a crawler get you there at the price of a small server. If you need competitors’ data, you’re buying it, and the question is from whom.
What running one takes
A server and a database. The easy part. A daily copy of figures grows with the number of sites, so plan some room.
Scheduled jobs that really run. A daily job that quietly stops leaves a hole in your history that nothing can fill. Have it tell you when it fails.
Google OAuth set up properly. If a tool reads Search Console through your own Google client, a consent screen still in Testing gets refresh tokens that expire after 7 days. Your daily jobs would stop every week until you publish it.
Backups you’ve restored. Your history is the one thing you can’t get again from Google past 16 months. Back it up, and try a restore.
Updates. Anything facing the internet needs security updates. Decide who applies them.
Someone’s time. It’s the line people forget. Count it honestly against what you’d pay a hosted tool.
What the licence asks of you
MIT and Apache-2.0 ask almost nothing: keep the notice. AGPL-3.0 adds one thing: if you modify the program and people use it over a network, you must offer them your version’s source. For a team running it unmodified, or modified for its own use, that’s rarely an issue, and for someone reselling it as a service, it’s the point. This is general information, not legal advice.
How to choose
| What you need | Start with |
|---|---|
| Audit your own site | SEOnaut on a server, or SiteOne Crawler on your machine |
| Performance across a whole site | Unlighthouse |
| Stop speed regressions at each deploy | Lighthouse CI |
| Rank at a moment and place, for chosen keywords | SerpBear, with a scraping service you’re happy with |
| Competitors, backlinks, keyword volumes | OpenSEO with your own DataForSEO key |
| Your own figures across many sites | A script over the APIs today. It’s the gap Owlseen is being built for, once it’s released |
Most people end up with two: one crawler and one tracker. That’s fine. They don’t need to be one app. The real test is whether you’ll still be running it in a year.
Whatever you pick, start storing your figures now. The history you wish you had is the one thing you can’t get back.