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.
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?”
Score, grade and nine individual checks for any domain — as clean, machine-readable JSON.
Build it into scripts, monitoring or CI pipelines and check many domains regularly.
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.
1 Base URL
All requests go to this address. Just append the endpoint you want.
2 Endpoints
Two endpoints are available. The most important is /validate.
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.
| Parameter | Description |
|---|---|
| domain required | Domain without protocol, e.g. example.com. A leading https:// or a path are removed automatically. |
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
| Field | Type | Meaning |
|---|---|---|
| domain | String | Checked domain (cleaned, lowercased) |
| url | String | Full checked URL of the llms.txt |
| score | Number | Total score from 0 to 100 |
| max_score | Number | Maximum achievable points (always 100) |
| grade | String | Grade A / B / C / D / F |
| summary | String | Short plain-text assessment |
| checks | Array | The nine individual checks with label, passed, info and points |
| content | String | The 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:
🔑 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.
GEO score 0–100 + individual checks for a domain.
Newly discovered llms.txt files + recently changed.
GEO score leaderboard, optionally by category.
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.
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.