Tech Stack Detector, SEO & llms.txt Checker avatar

Tech Stack Detector, SEO & llms.txt Checker

Pricing

from $1.00 / 1,000 site checkeds

Go to Apify Store
Tech Stack Detector, SEO & llms.txt Checker

Tech Stack Detector, SEO & llms.txt Checker

One row per website: tech stack (CMS, framework, analytics, payments, CDN), title/meta/Open Graph/JSON-LD, SEO issues with a 0-100 score, robots.txt rules for AI crawlers (GPTBot, ClaudeBot), sitemap and llms.txt. Plain HTTP, no browser. $1.50 per 1,000 sites; error rows free.

Pricing

from $1.00 / 1,000 site checkeds

Rating

0.0

(0)

Developer

Fairquery

Fairquery

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Share

What does it do?

This tech stack detector returns one structured row per website: what it's built on (CMS, framework, analytics, chat, payments, CDN, hosting), its title, meta description, Open Graph and JSON-LD, an SEO issue list with a 0–100 score, robots.txt rules for AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot and more), the XML sitemap, llms.txt / llms-full.txt, security headers and a 0–100 AI-readiness score.

It uses plain HTTP with no browser, which suits lead enrichment and site audits. It checks the page you give it, not the whole site.

How much does it cost?

Pay per event, no subscription. Prices per 1,000 sites:

EventFree planStarter (Bronze)Scale (Silver)Business (Gold)
site-checked (primary)$1.50$1.35$1.20$1.00

The Apify Free plan includes $5 of usage every month, no credit card needed, and this Actor's event charges come out of that $5. That covers about 3,300 websites a month ($5 ÷ ($1.50/1,000)), plus a start fee of $0.05 per 1,000 runs. Sites that can't be fetched are never charged.

Example (Free-plan prices): 250 lead websites: 250 × ($1.50/1,000) = about $0.38 ($375.00 per 1,000 such runs).

Paid Apify plans get the Store discount automatically: Starter = Bronze, Scale = Silver, Business = Gold. Set a maximum cost per run in the run options and the Actor stops cleanly at that limit.

How to use it

  1. Paste domains or URLs into URLs (for example vercel.com, https://www.python.org).
  2. Keep robots.txt, sitemap and llms.txt checks on, or switch off what you don't need.
  3. Click Start and export one row per site as CSV, Excel or JSON, or call it from Clay, n8n, Make or an AI agent.

Example input

{
"urls": [
"apify.com",
"https://www.python.org",
"vercel.com"
]
}

Example output (one row from a real run on 2026-10-17, shortened to the main fields):

{
"input": "vercel.com",
"final_url": "https://vercel.com/",
"status_code": 200,
"title": "Agentic Infrastructure - Vercel",
"technologies": [
{
"name": "Next.js",
"category": "JS framework"
},
{
"name": "Tailwind CSS",
"category": "CSS framework"
},
{
"name": "Vercel",
"category": "Hosting"
}
],
"server": "Vercel",
"ai_bots": {
"GPTBot": "partial",
"ClaudeBot": "partial",
"PerplexityBot": "partial",
"Google-Extended": "partial"
},
"robots_txt_found": true,
"sitemap_url_count": 8203,
"llms_txt_found": true,
"llms_full_txt_found": false,
"seo_score": 100,
"seo_issues": [],
"ai_readiness_score": 85
}

FAQ

How can I find out what technology a website uses?

Add the site to URLs and run the Actor. The row lists detected technologies by category (CMS, framework, analytics, payments, CDN and more), read from the HTML, headers and scripts of that page.

Does this site block GPTBot or ClaudeBot?

The row shows robots.txt rules per AI crawler (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot and others), plus whether the site serves llms.txt.

How many websites can I check for free?

About 3,300 per month on Apify's Free plan, which includes $5 of usage.

Does it crawl the whole site or render JavaScript?

No. It makes plain HTTP requests to the page you give it (plus robots.txt, sitemap and llms.txt). Single-page apps that render in the browser may show a THIN_CONTENT issue.

Limits

Detection is heuristic (one request, no JavaScript). No Core Web Vitals or backlink data. robots.txt is respected by default.

When to use this Actor (LLM / tool selection)

Use it when an agent needs to:

  • Enrich a lead/company list with "what is this site built on?" (CMS, framework, analytics, chat, payments, CDN, hosting)
  • Run a quick on-page SEO check of homepages or landing pages
  • Answer "does this site have an llms.txt?" / "does it block GPTBot or ClaudeBot?"
  • Get a site's title, description, social links, feeds and structured-data types before summarizing it

Do not use it for full-site crawls, JS-rendered content (single-page apps may show THIN_CONTENT), Core Web Vitals, or backlink data.

How it works

Per site (max 3 in parallel): GET /robots.txt → GET <url> → sitemap (from robots Sitemap: or /sitemap.xml, /sitemap_index.xml) → /llms.txt and /llms-full.txt. Identifies as FairqueryBot/1.0; by default skips pages that robots.txt disallows for generic crawlers. Tech detection uses ~75 HTML/header/cookie/meta-generator signatures from a single response.

Input

FieldTypeDefaultDescription
urlsstring[]– (required; 3 sample sites are prefilled in the Console form)Domains or URLs
checkRobotsbooltruerobots.txt + AI-bot access map
checkSitemapbooltrueFind sitemap and count URLs
checkLlmsTxtbooltrueCheck /llms.txt and /llms-full.txt
respectRobotsTxtbooltrueSkip URLs disallowed for generic crawlers
maxSitesint500Safety cap per run
{ "urls": ["stripe.com", "https://www.example.org/pricing"], "checkSitemap": false }

Output

Every row has schema_version (1.0.0), type (site | error), source_url (final fetched URL), checked_at.

{
"type": "site", "domain": "vercel.com", "status_code": 200, "https": true, "response_ms": 310,
"title": "Agentic Infrastructure - Vercel", "meta_description": "…", "canonical": "https://vercel.com/", "lang": "en",
"h1": ["…"], "word_count": 256, "open_graph": { "title": "…", "image": "…" }, "json_ld_types": ["Organization", "WebSite"],
"technologies": [{ "name": "Next.js", "category": "JS framework", "evidence": "html \"/_next/static\"" }, { "name": "Vercel", "category": "Hosting", "evidence": "header x-vercel-id" }],
"security_headers": { "strict_transport_security": true, "content_security_policy": true },
"robots_txt_found": true, "ai_bots": { "GPTBot": "partial", "ClaudeBot": "partial" },
"sitemap_found": true, "sitemap_url_count": 8787, "llms_txt_found": true, "llms_txt_title": "Vercel",
"seo_score": 100, "seo_issues": [], "ai_readiness_score": 85
}
  • ai_bots[bot]: allowed (no rules), partial (some paths disallowed), blocked (root disallowed).
  • seo_issues[]: {code, severity, message}; codes include NO_HTTPS, MISSING_TITLE, TITLE_TOO_LONG, MISSING_META_DESCRIPTION, MISSING_H1, MULTIPLE_H1, MISSING_CANONICAL, MISSING_LANG, MISSING_VIEWPORT, NOINDEX, MISSING_OPEN_GRAPH, MISSING_STRUCTURED_DATA, IMAGES_MISSING_ALT, THIN_CONTENT, MISSING_ROBOTS_TXT, MISSING_SITEMAP. Score = 100 − 15/8/3 per high/medium/low issue.
  • ai_readiness_score: llms.txt 25, llms-full.txt 5, AI bots allowed up to 20, JSON-LD 15, ≥150 words of server-rendered text 15, sitemap 10, meta description 10; −30 if noindex.

Error rows (machine-readable, never charged)

{ "type": "error", "code": "BLOCKED_OR_RATE_LIMITED", "message": "GET https://x.com/ returned HTTP 403.", "retryable": false, "status_code": 403, "input": "x.com" }

Codes: INPUT_EMPTY, INVALID_URL, MAX_SITES_EXCEEDED, ROBOTS_DISALLOWED, FETCH_FAILED, HTTP_ERROR, BLOCKED_OR_RATE_LIMITED.

Run summary

Key-value store record RUN_SUMMARY: sites checked, errors, HTTP request count, average SEO and AI-readiness scores, llms.txt count, echoed input.

Pricing

EventPriceWhen
site-checked$1.50 per 1,000Each website row returned
apify-actor-start$0.05 per 1,000 runsOnce per run, per GB of memory (Apify default event)

Error rows (FETCH_FAILED, HTTP_ERROR, BLOCKED_OR_RATE_LIMITED, ROBOTS_DISALLOWED, …) are never charged.

Worked example: 1,000 domains from a lead list where 60 cannot be fetched: 940 × ($1.50/1,000) = $1.41, plus $0.05 per 1,000 runs.

To cap spend, set a maximum cost per run in the run options; the Actor stops cleanly at the limit. maxSites caps how many sites one run checks. Prices are from the Store pricing tab (October 2026).

Memory / runtime

Runs at a fixed 256 MB (default and maximum; the check is network-bound, so more memory does not help), no browser, no proxy. Typically 1–3 s per site, 3 sites in parallel. Slow or rate-limiting sites take longer.

MCP / Apify tools

Call from agents via Apify MCP (https://mcp.apify.com, authenticated with your Apify token), Actor fairquery/website-tech-seo-ai-readiness:

{ "actor": "fairquery/website-tech-seo-ai-readiness", "input": { "urls": ["stripe.com"] } }

Read dataset items (type == "site") and RUN_SUMMARY.

Works well after

Troubleshooting

SymptomCause and fix
Run fails at once with INPUT_EMPTYurls was empty. The three sample sites in the Console form are prefill only and are not sent with API calls.
BLOCKED_OR_RATE_LIMITED (HTTP 403/429)The site blocks datacenter traffic or bots. These rows are free; the Actor does not use proxies or browsers to get around blocks.
ROBOTS_DISALLOWEDrobots.txt disallows the page for generic crawlers. Set respectRobotsTxt to false only if you have the right to fetch the page.
Low SEO score or THIN_CONTENT on a modern siteThe page renders its content with JavaScript. The Actor reads the server HTML only (no browser).
Technology missing from the listDetection uses about 75 signatures from a single response, so some tools (for example tag-manager-only scripts) are not visible. The list is heuristic.

FAQ

Does it render JavaScript?

No. It makes plain HTTP requests, which keeps it fast and cheap. Content injected by JavaScript is not seen.

What does the AI-readiness score measure?

llms.txt (25), llms-full.txt (5), AI bots allowed (up to 20), JSON-LD (15), at least 150 words of server-rendered text (15), sitemap (10) and meta description (10); minus 30 for noindex. It is a heuristic, not a ranking factor.

How much does it cost?

$1.50 per 1,000 site rows, plus a start fee of $0.05 per 1,000 runs. Failed fetches are free.

How do I limit spend?

Set a maximum cost per run in the run options and/or lower maxSites.

Does it crawl the whole site?

No. Per site it fetches robots.txt, the given URL, the sitemap and /llms.txt + /llms-full.txt. Use a crawler for full-site audits.

Can an AI agent call it?

Yes, through Apify MCP with Actor fairquery/website-tech-seo-ai-readiness.

Fairquery family

Other Fairquery tools on the Apify Store. Each one returns structured rows with machine-readable error codes, and error rows are never charged:

All Fairquery Actors: https://apify.com/fairquery

Disclaimer

Detection is heuristic (single request, no JS execution). Only publicly served files are read; robots.txt is respected by default.