The llms.txt API

Check any website automatically for a correct llms.txt — right here in the browser or via code in your own applications. You get a rating of 0–100 points and a grade from A to F.

Completely free No sign-up 60 requests / hour Response as JSON

What is the API good for?

An API is an interface through which other programs can request data — without ever opening the website. This one answers a single question: “How good is this domain’s llms.txt?”

📊
Fetch the rating

Score, grade and nine individual checks for any domain — as clean, machine-readable JSON.

🔁
Automate

Build it into scripts, monitoring or CI pipelines and check many domains regularly.

🆓
Start instantly

No API key, no registration. Just call the URL — done.

Try it now — no code needed

Enter a domain and see instantly what the API returns. This is exactly how it works in your own programs.

https://
Tip: enter your own domain to test your llms.txt.

1 Base URL

All requests go to this address. Just append the endpoint you want.

GET https://llmstxt.info/tools/api/v1

2 Endpoints

Two endpoints are available. The most important is /validate.

GET /v1/validate?domain={domain}

Fetches the /llms.txt of the given domain and checks it across nine categories. Returns score (0–100), grade (A–F), the individual results and the raw content.

ParameterDescription
domain required Domain without protocol, e.g. example.com. A leading https:// or a path are removed automatically.
GET /v1/health

Quick availability check. Returns status, service name and version, and does not count against your hourly limit.

3 Example code

Copy one of the templates and replace beispiel.de with your domain. Choose your language:

curl "https://llmstxt.info/tools/api/v1/validate?domain=beispiel.de"
const res = await fetch(
  "https://llmstxt.info/tools/api/v1/validate?domain=beispiel.de"
);
const data = await res.json();
console.log(data.score, data.grade); // 85 "B"
$json = file_get_contents(
  "https://llmstxt.info/tools/api/v1/validate?domain=beispiel.de"
);
$data = json_decode($json, true);
echo $data["score"] . " (" . $data["grade"] . ")";

What the response looks like

The API always responds as JSON. Here is a shortened example:

// HTTP 200 — all good
{
  "domain": "beispiel.de",
  "url": "https://beispiel.de/llms.txt",
  "score": 85,          // points 0–100
  "max_score": 100,
  "grade": "B",           // grade A–F
  "summary": "Good – minor improvements possible.",
  "checks": [
    {
      "id": "reachable",
      "label": "llms.txt reachable (HTTP 200)",
      "passed": true,
      "info": "https://beispiel.de/llms.txt",
      "points": 20
    }
    // … 8 more checks
  ],
  "content": "# Beispiel\n> Beschreibung …"
}

The response fields

FieldTypeMeaning
domainStringChecked domain (cleaned, lowercased)
urlStringFull checked URL of the llms.txt
scoreNumberTotal score from 0 to 100
max_scoreNumberMaximum achievable points (always 100)
gradeStringGrade A / B / C / D / F
summaryStringShort plain-text assessment
checksArrayThe nine individual checks with label, passed, info and points
contentStringThe raw content of the llms.txt (only if reachable)

Limits

Up to 60 requests per hour are allowed per IP address. Every response tells you how many you have left — via two headers:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

Once the limit is reached, the API responds with 429 Too Many Requests and a Retry-After header (seconds until the next free request).

Status codes

The HTTP status tells you immediately whether everything worked:

200Success — result is in the body
400Domain missing or invalid
404Endpoint does not exist
405Wrong method (only GET allowed)
429Too many requests — wait briefly

🔑 Pro API (v2): score, feed, ranking & compare

Beyond the free v1 there is the v2 API with a personal key — for monitoring data, the discovery feed, the GEO ranking and the domain comparison. Included in the Premium (5,000 calls/month) and API (50,000 calls/month) plans.

Base URL & authentication

https://llmstxt.info/tools/api/v2

Send your key in the Authorization: Bearer lmx_… header (or as ?key=). Generate the key in your account.

GET/v2/score?domain={domain}

GEO score 0–100 + individual checks for a domain.

GET/v2/feed

Newly discovered llms.txt files + recently changed.

GET/v2/ranking?cat={kategorie}

GEO score leaderboard, optionally by category.

GET/v2/compare?domains=a.de,b.de

Compare 2–5 domains by GEO score & structure.

Example

curl "https://llmstxt.info/tools/api/v2/score?domain=beispiel.de" \
  -H "Authorization: Bearer lmx_dein_schluessel"

Every response includes the X-RateLimit-Limit and X-RateLimit-Remaining headers. Without a valid key: 401; without an API plan: 403; quota exhausted: 429.

Get API access →

Prefer to work without code? Use the validator in the browser with a graphical breakdown — or create a new llms.txt directly with the generator.

Copied