// site_crawler · one_time

SERPCTRL // Crawler A fast, no-nonsense desktop app for on-page SEO and LLM-visibility audits.

What it does: Crawls any site and generates a clean XLSX file with all meta tags, technical statuses, and advanced structured data (Schema) validation. How it works: Runs completely locally on your computer with zero URL limits, zero tracking, and no account setup. What it costs: A one-time €50 payment. No €245/year subscriptions for dashboards and features you’ll never actually open.

Get SERPCTRL // Crawler — €50One-time purchase →// runs on your laptop · no account · pay once
// what_is_it

It's the Screaming Frog crawl, packaged differently.

Built in Python, wrapped as a .app for macOS and a .exe for Windows. Point it at a URL and it walks every internal link, respects robots.txt, writes one XLSX row per page. Title, meta description, H1/H2, canonical, meta robots, X-Robots-Tag, indexability, status code, word count, response time, crawl depth, in-link and out-link counts, full schema audit (count, types, status, issue list), and the full outlink list per page. Same fields most of us actually export from Screaming Frog, plus the structured-data audit that usually lives in a separate paid tool. The 500-URL free cap is gone. So is the annual bill.

// llm_visibility · exclusive

See your site the way ChatGPT, Claude, and Perplexity do.

AI search engines don't run JavaScript. If your schema is injected client-side, GPTBot and ClaudeBot and PerplexityBot and CCBot all see nothing, even though your rich-results tester says everything's fine. SERPCTRL // Crawler reads exactly what the AI tier reads, on every URL in the crawl, and dumps the result into four XLSX columns. Plus full type-aware schema validation against Google's rich-result rules. The schema module that Screaming Frog, Sitebulb, and Ahrefs charge extra for, included.

// what_chatgpt_sees

The AI-crawler view. Not the rendered DOM.

GPTBot, ClaudeBot, PerplexityBot, CCBot. Every one of them reads the raw server HTML and ignores anything injected post-load. Most rich-results testers run headless Chromium, so they show you the optimistic version, the rendered DOM that Googlebot eventually catches up to. This audit reads what the AI tier actually reads. Per URL. At crawl scale. The visibility gap nobody else surfaces.

// validation_per_type

Real validation, not "does it parse".

Every JSON-LD block parsed, walked through any @graph wrapper, checked against Google's rich-result rules for the type it claims to be. Article, Product, FAQPage, BreadcrumbList, Recipe, Event, LocalBusiness, VideoObject, JobPosting, Organization. Missing required fields, wrong date formats, currency symbols inside price strings, plain-string authors. Each issue flagged with severity, not crammed into one cell.

// at_scale

Filter 1,000 URLs in two clicks.

Four XLSX columns per row: schema_count, schema_types, schema_status (NONE / OK / WARNINGS / CRITICAL / PARSE ERROR / SKIPPED), schema_issues. Auto-filter on, frozen header. Find every page where AI crawlers see nothing. Send the column straight to dev, or pivot it against your top-traffic pages. Toggle the audit off via the "Run schema audit" checkbox if you only want the core SEO signals.

// included

Free with the crawl. No paid module.

Screaming Frog Custom Extraction needs a paid licence. Sitebulb's structured-data report is on Pro and up. Ahrefs Site Audit gates it behind a recurring SaaS bill. SERPCTRL bundles the schema audit in the €50 you already pay. Every URL. Every run. No cap.

// problems_it_fixes

The big crawlers are priced for in-house teams, not for you.

If you know what data matters in an on-page crawl and just want to extract it, the existing tools charge a yearly fee for a lot of stuff you'll never open.

// problem_01

€245/year is overkill for what you'll actually use.

Screaming Frog bills annually for the full feature set. Most freelancers and small agencies use a fraction of it. The rest of the year the licence sits there, charged but unopened.

// problem_02

The 500-URL free cap kills it.

Most real audits start at a thousand pages. Screaming Frog's free tier stops crawling exactly when it gets useful, then asks for €245.

// problem_03

Cloud crawlers bill forever, not once.

Sitebulb, Ahrefs Site Audit, Netpeak. Good tools. They also upload your client's site to a SaaS and start a recurring monthly invoice.

// problem_04

You ship XLSX, not screenshots of a dashboard.

Half the time the spreadsheet is the actual deliverable. You filter it, hand it to dev, archive it in the project folder. Some tools hide the raw rows behind a UI that doesn't export cleanly.

// the_math

Pay once vs. pay forever.

Same on-page audit, side-by-side. Cheapest publicly listed plan, EUR. Live prices, May 2026.

ToolCostBillingURL cap (free)Native desktopRuns offline
Screaming Frog (paid)€245per year- Java GUI
Screaming Frog (free)€0-500 URLs Java GUI
Sitebulb€1,330per year-
Ahrefs Site Audit€2,148per year-cloud only-
SERPCTRL // Crawler€50one-timenone Python / native

// pricing as of May 2026, pulled live from each vendor's licence/pricing page. Screaming Frog €245/year/seat. Sitebulb starting at £95/mo (~€1,330/yr). Ahrefs Lite €179/mo (~€2,148/yr) - Site Audit is part of the broader plan. Screaming Frog free tier capped at 500 URLs and disables several features (custom extraction, scheduling, JS rendering).

// two_modes

Spider mode and list mode.

Spider mode walks every internal link from a starting URL. List mode takes a CSV, TSV, or TXT and audits exactly those URLs, nothing else. Either way the XLSX comes out in the same shape. Mockups below are the actual GUI.

// spider_mode

Spider from URL

Crawl every internal page from a seed URL. Respects robots.txt, configurable concurrency.
RESPECTS ROBOTS.TXT5 THREADSDEPTH ∞
seed urlhttps://example.com/
crawled1,247 pages82% internal
queued203in queue
statusrunning · pause / resumelive
outputcrawl_example.com_20260506.xlsx.xlsx
// list_mode

Check URL list (CSV)

Drop a CSV / TSV / TXT, audit only those URLs. No spidering, no extra requests.
CSVTSVTXTAUTO-DETECT URL COL
filepriority-pages.csvloaded
urls412 uniquefrom 418 rows
checked412 / 412100%
status mix387 · 200 OK14 · 3xx
outputurlcheck_priority-pages_20260506.xlsx.xlsx
// xlsx_export

What lands in the XLSX.

One sheet, one row per page, frozen header, autofilter on. The column shape mirrors what most SEOs are already pivoting in Excel: same field names, same order Screaming Frog uses.

ColumnTypeSourceExample
STATUS
status_code
HTTP response
»
200, 301, 404, 503
STATUS
indexability
computed flag
»
Indexable / Non-Indexable
STATUS
indexability_status
reason
»
Noindex · Canonicalised · Client Error · Blocked by robots.txt
META
title_1 + length
<title> tag
»
"SerpCtrl Crawler - free desktop SEO crawler" · 47
META
meta_description + length
<meta name="description">
»
"Free site crawler. No URL cap..." · 154
META
canonical / meta_robots / x_robots_tag
indexing directives
»
canonical=self · robots=index,follow · x-robots=-
STRUCTURE
h1_1, h1_2, h2_1, h2_2
first two of each
»
flagging missing or duplicate H1 in seconds
CONTENT
word_count
script/style/noscript stripped
»
847
PERF
size_bytes / response_time_ms
from response
»
42,118 bytes · 312 ms
LINKS
crawl_depth · inlinks · outlinks · outlink_urls
graph data
»
depth=2 · in=14 · out=37 · full URL list
SCHEMA
schema_count
JSON-LD entities found
»
5
SCHEMA
schema_types
@type list (deduped)
»
Article, BreadcrumbList, Organization
SCHEMA
schema_status
overall result
»
NONE / OK / WARNINGS / CRITICAL / PARSE ERROR / SKIPPED
SCHEMA
schema_issues
issue summary, ≤240 chars
»
[C] Article: missing image; [W] author is plain string

// 26 columns total. Frozen header, autofilter on, sized for one-row-per-page review. Output path: ~/Documents/serpctrl-crawler/ on macOS, ./crawls/ next to the binary on Windows.

// privacy

Runs on your laptop.

The crawler talks to one server: the site you pointed it at. No telemetry going home, no analytics ping, no account behind it. Your client URLs don't touch ours, because there's no "ours".

// data_in

Only the site you crawl.

Whatever URL you paste. That's the only outbound traffic, plus a one-off robots.txt fetch per host.

// data_out

Nothing leaves the app.

No telemetry. No crash reports. The XLSX gets written to your disk and that's the entire output.

// account

No login, ever.

Download, double-click, run. No signup, licence file, or email on the way.

// source

It's just Python.

Source on GitHub. Read it, fork it, build your own .app with build.sh.

// who_built_it

Built by people who do this for a living.

Three operators based out of Rīga, Latvia. No VC money, no growth-hacking team. We built the tool because we needed it on a Tuesday afternoon, and the €1 500/year alternatives weren't going to ship it by Friday.

Pauls Špakovskis, SerpCtrl
// pauls_spakovskis

Pauls Špakovskis

Head of SEO at SerpCtrl

Started in marketing, then pivoted to SEO the moment he realised it was the one corner of the job that combined math, logic and marketing into the same problem. Cut his teeth at TV3 and SEOBROTHERS, has shipped work for BBC, TET and LMT. Now Head of SEO and the lead on every tool you see on this page. Wrote most of the on-page logic because the alternative was four browser tabs and a spreadsheet.

LinkedIn
Laima Ērkšķe-Kreicberga, SerpCtrl
// laima_erksne_kreicberga

Laima Ērkšķe-Kreicberga

CEO at SerpCtrl

Runs SerpCtrl. The kind of CEO who came up doing the work, not selling it: multi-site, multi-language SEO at scale across GSC, GA4, Ahrefs, Semrush and Screaming Frog, with iGaming as her deepest territory, including SEOBROTHERS' largest project at Slotsjudge, where she ran the SEO strategy and led the specialist team behind it. Sets product direction with the operator's bias: if a feature doesn't shave time off the work, it doesn't ship. Still opens DevTools herself when a dashboard reads wrong.

LinkedIn
// get_it

How to actually get it.

€50 paid once. No renewal, no licence file, no account waiting for you. Pick the build that matches your laptop and the file lands in Downloads.