GEO Data API

Build with AI Visibility data.
Free to start.

100 free queries/day. GEO scores for 10,000+ domains — ChatGPT, Perplexity, Claude, Gemini & Grok. Drop it in your dashboard in 5 minutes.

Get your free API key

No credit card. No account needed. Just your email.

Your API Key

Save this key now — it won't be shown again.

Pricing

Start free. Scale when you need to.

Researcher
1,000 req/day
$0/mo — .edu email
1,000 queries/day
All 6 endpoints
Academic citation req.
Auto-approved w/ .edu
Agency
10,000 req/day
$99/mo
10,000 queries/day
All 6 endpoints
Attribution optional
Priority support
Enterprise
Unlimited
Custom pricing
Unlimited queries
All 6 endpoints
White-label permitted
SLA + support

Endpoints

6 endpoints. All return JSON with consistent structure.

Access your API dashboard

Enter your API key to view usage stats and manage your account.

Your key is never stored in the browser. It's sent once to verify your identity.

Live Sandbox

Try the API right here — no key needed. 10 requests per 5 minutes.

// Response will appear here
Ready

Want higher limits? Get a free API key for 100 requests/day.
Full documentation: /geo-api/docs

Quick Start

3 lines to get a GEO score. API key goes in the query string or Authorization header.

# Get a GEO score
curl "https://traffi.app/api/public/geo/v1/score?domain=notion.so&api_key=YOUR_KEY"

# Or use Authorization header
curl -H "Authorization: Bearer YOUR_KEY" \
     "https://traffi.app/api/public/geo/v1/score?domain=notion.so"

# Compare 3 domains
curl "https://traffi.app/api/public/geo/v1/compare?domains=notion.so,linear.app,figma.com&api_key=YOUR_KEY"
const API_KEY = 'YOUR_KEY';
const BASE    = 'https://traffi.app/api/public/geo/v1';

// Get GEO score for a domain
async function getGeoScore(domain) {
  const res  = await fetch(`${BASE}/score?domain=${domain}&api_key=${API_KEY}`);
  const data = await res.json();
  return data;
}

// Get leaderboard for SaaS vertical
async function getLeaderboard() {
  const res  = await fetch(`${BASE}/leaderboard?vertical=SaaS&limit=10&api_key=${API_KEY}`);
  const data = await res.json();
  console.log(data.results);
}

getGeoScore('notion.so').then(console.log);
import requests

API_KEY = 'YOUR_KEY'
BASE    = 'https://traffi.app/api/public/geo/v1'

# Get GEO score
resp = requests.get(f'{BASE}/score', params={'domain': 'notion.so', 'api_key': API_KEY})
data = resp.json()
print(f"GEO Score: {data['geo_score']} | Rank: #{data['global_rank']}")

# Compare competitors
resp = requests.get(f'{BASE}/compare', params={
    'domains': 'notion.so,linear.app,figma.com',
    'api_key': API_KEY
})
comparison = resp.json()
print('Leader:', comparison['leader'])

Sample Response

{
  "api_version": "v1",
  "domain": "notion.so",
  "geo_score": 74,
  "engines": {
    "chatgpt": 82, "perplexity": 71, "claude": 68, "gemini": 73, "grok": 76
  },
  "vertical": "SaaS",
  "global_rank": 142,
  "vertical_rank": 23,
  "status": "completed",
  "last_updated": "2026-04-07T00:00:00.000Z",
  "powered_by": "Traffi GEO Index -- traffi.app",
  "attribution_required": true,
  "attribution_text": "Powered by Traffi GEO -- traffi.app"
}

Authentication

Pass your API key as a query parameter or in the Authorization header:

# Query parameter
?api_key=tgeo_live_abc123

# Authorization header
Authorization: Bearer tgeo_live_abc123

Attribution

Free and Researcher tiers require attribution in any public-facing UI. Agency and Enterprise may use without attribution.

<!-- Add somewhere visible in your UI -->
<a href="https://traffi.app">Powered by Traffi GEO</a>

Full reference docs: traffi.app/geo-api/docs