API Documentation
Integrate agent-readiness scanning into your apps, CI/CD pipelines, browser extensions, or monitoring dashboards.
Quick Start
No API key required for the free tier (10 requests/minute, 100/day per IP). For higher limits, include your API key in the header.
# Scan a URL
curl -X POST https://globaldex.ai/api/v1/scan \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
# With API key (higher limits)
curl -X POST https://globaldex.ai/api/v1/scan \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ar_your_key_here" \
-d '{"url": "https://example.com"}'Base URL
https://globaldex.ai/api/v1Authentication
Pass your API key via the Authorization header or x-api-key header.
| Tier | Rate Limit | Daily Limit | Auth |
|---|---|---|---|
| Free | 10 req/min | 100 req/day | None (IP-based) |
| Pro | 60 req/min | 5,000 req/day | API Key |
| Enterprise | 300 req/min | 100,000 req/day | API Key |
Rate Limit Headers
Every response includes rate limit information:
| X-RateLimit-Limit | Max requests per minute |
| X-RateLimit-Remaining | Requests remaining in window |
| X-RateLimit-Reset | Seconds until window resets |
| X-RateLimit-Tier | Your current tier |
Endpoints
/api/v1/scanRun a Scan
Scan a URL and get a full agent-readiness report. Results are persisted and appear on the leaderboard.
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | required | Full URL to scan (https://example.com) |
Example
curl -X POST https://globaldex.ai/api/v1/scan \
-H "Content-Type: application/json" \
-d '{"url": "https://stripe.com"}'Response
{
"id": "a1b2c3d4-...",
"url": "https://stripe.com",
"domain": "stripe.com",
"score": 80,
"grade": "B",
"has_webmcp": false,
"checks_passed": 12,
"checks_total": 20,
"categories": [
{
"name": "structure",
"label": "Structure",
"score": 20,
"max_score": 25,
"percentage": 80,
"checks": [...]
}
],
"scanned_at": "2026-02-18T..."
}/api/v1/lookup?domain=stripe.comLookup a Domain
Retrieve the latest scan result for a domain without running a new scan. Add &history=true for all scans.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| domain | string | required | Domain to look up (e.g. stripe.com) |
| history | boolean | optional | Set to 'true' to return all scans |
Example
curl https://globaldex.ai/api/v1/lookup?domain=stripe.comResponse
{
"id": "a1b2c3d4-...",
"domain": "stripe.com",
"score": 80,
"grade": "B",
"has_webmcp": false,
"checks_passed": 12,
"checks_total": 20,
"scanned_at": "2026-02-18T...",
"results": { ... }
}/api/v1/domainsList All Domains
Browse the full dataset of scanned domains with filtering and pagination.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| limit | number | optional | Results per page (default 50, max 500) |
| offset | number | optional | Pagination offset (default 0) |
| sort | string | optional | 'score' | 'recent' | 'domain' |
| min_score | number | optional | Filter domains with score >= value |
| webmcp | boolean | optional | 'true' to show only WebMCP-enabled |
Example
curl "https://globaldex.ai/api/v1/domains?sort=score&limit=10&min_score=80"Response
{
"domains": [
{
"domain": "basecamp.com",
"score": 89,
"grade": "B",
"has_webmcp": false,
"total_scans": 1,
"first_seen": "2026-02-18T...",
"last_seen": "2026-02-18T..."
}
],
"total": 500,
"limit": 10,
"offset": 0,
"sort": "score"
}/api/v1/statsGlobal Statistics
Aggregated statistics across the entire dataset — score distributions, WebMCP adoption, category averages.
Query Parameters
| Name | Type | Required | Description |
|---|
Example
curl https://globaldex.ai/api/v1/statsResponse
{
"total_scans": 510,
"total_domains": 500,
"avg_score": 72.4,
"median_score": 74,
"max_score": 89,
"min_score": 15,
"webmcp_adoption": {
"count": 0,
"percentage": 0
},
"score_distribution": {
"A": 12, "B": 145, "C": 198, "D": 102, "F": 43
},
"category_averages": [
{ "category": "structure", "avg_percentage": 78 },
{ "category": "metadata", "avg_percentage": 65 }
]
}/api/v1/badge?domain=stripe.comEmbeddable Badge
Returns an SVG badge image you can embed in READMEs, docs, or websites. Shows the domain's score and grade.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| domain | string | required | Domain to show badge for |
| style | string | optional | 'flat' (default) or 'for-the-badge' |
Example
Response
<!-- Returns SVG image -->
<img src="https://globaldex.ai/api/v1/badge?domain=stripe.com" alt="GlobalDex Score" />Integration Examples
JavaScript / TypeScript
const response = await fetch("https://globaldex.ai/api/v1/scan", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer ar_your_key_here",
},
body: JSON.stringify({ url: "https://example.com" }),
});
const data = await response.json();
console.log(`Score: ${data.score}/100 (Grade: ${data.grade})`);Python
import requests
response = requests.post(
"https://globaldex.ai/api/v1/scan",
json={"url": "https://example.com"},
headers={"Authorization": "Bearer ar_your_key_here"},
)
data = response.json()
print(f"Score: {data['score']}/100 (Grade: {data['grade']})")README Badge
[](https://globaldex.ai/sites)CI/CD Pipeline
# GitHub Actions
- name: Check Agent-Readiness
run: |
SCORE=$(curl -s -X POST https://globaldex.ai/api/v1/scan \
-H "Content-Type: application/json" \
-d '{"url": "${{ env.DEPLOY_URL }}"}' | jq '.score')
echo "Agent-Readiness Score: $SCORE/100"
if [ "$SCORE" -lt 50 ]; then
echo "::warning::Low agent-readiness score: $SCORE/100"
fiError Codes
| Status | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad request — invalid URL or missing parameters |
| 401 | Unauthorized — invalid API key |
| 404 | Not found — domain has not been scanned |
| 429 | Rate limit exceeded |
| 502 | Scan failed — target site error |
| 504 | Scan timed out |