Agency API · v1

Read your VerifiedDR data from your own tools

Fetch the websites you own, their current Domain Rating, organic traffic, verification status, and latest backlink report totals. Anyone can read these docs; only Agency/API users can create API keys.

Base URL

Authentication

Every request needs an API key passed as a bearer token. Keys are scoped to your account and only work while your Pro subscription is active or trialing — lapsed subscribers keep their key but lose access until they resubscribe.

Header
Authorization: Bearer vdr_your_api_key

Account scoped

The API only returns websites owned by the API key owner — never other users' data, even for publicly listed sites.

JSON everywhere

All endpoints return JSON with standard HTTP status codes. Errors use an `error` envelope.

Rate limits

Requests are limited to 60 requests per minute in a sliding window, counted per API key rather than per IP — so server-to-server callers behind one NAT don't starve each other. Over the limit, the API responds with 429 and a Retry-After header in seconds.

429 response
{
  "success": false,
  "error": "Too many requests",
  "message": "Rate limit exceeded. Please try again later.",
  "retryAfter": 42000
}
GET/api/v1/sites

List your sites

Returns every website attached to your account with current metrics. Backlink and referring-domain totals come from each site's latest ready SEO report and are null until one exists.

sites[] — array of site objects
slugstring
Stable site identifier.
urlstring
Full site URL.
drnumber | null
Current Domain Rating (0–100).
trueDrnumber | null
Trust-adjusted authority score (0–100), or null until computed.
drWeeklyChangenumber | null
DR delta over the last 7 days.
drMonthlyChangenumber | null
DR delta over the last 30 days.
trueDrWeeklyChangenumber | null
True Domain Rating delta over the last 7 days.
trueDrMonthlyChangenumber | null
True Domain Rating delta over the last 30 days.
globalRanknumber | null
Global Ahrefs rank.
organicTrafficnumber | null
Estimated monthly organic visits.
trafficChangenumber | null
Traffic delta vs. the previous month, in percent.
verifiedboolean
Whether ownership is verified on VerifiedDR.
referringDomainsnumber | null
Referring domains from the latest ready SEO report.
backlinksnumber | null
Backlinks from the latest ready SEO report.
Request
curl https://verifieddr.com/api/v1/sites \
  -H "Authorization: Bearer vdr_your_api_key"
Response · 200
{
  "sites": [
    {
      "slug": "verifieddr-com",
      "url": "https://verifieddr.com",
      "dr": 42,
      "trueDr": 37,
      "drWeeklyChange": 1,
      "drMonthlyChange": 4,
      "trueDrWeeklyChange": 2,
      "trueDrMonthlyChange": 5,
      "globalRank": 120000,
      "organicTraffic": 8600,
      "trafficChange": 12,
      "verified": true,
      "referringDomains": 120,
      "backlinks": 540
    }
  ]
}
POST/api/v1/sites

Submit a site

Creates a new website under the API key owner and starts DR, traffic, metadata, and True Domain Rating enrichment in the background. If the website is already listed, the API returns the existing listing with created: false.

Request JSON
urlstring
Website URL or bare domain, for example verifieddr.com.
tagsstring[]
One to three category values, for example seo or directories. Labels like Customer Support are accepted too. List all valid values with GET /api/v1/categories. Unknown values are rejected with a 400 naming them.
titlestring | optional
Display name. Defaults to the hostname when omitted.
descriptionstring | optional
Short description, up to 240 characters.
xHandlestring | optional
Founder X handle, with or without @.
Request
curl https://verifieddr.com/api/v1/sites \
  -X POST \
  -H "Authorization: Bearer vdr_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "verifieddr.com",
    "title": "VerifiedDR",
    "tags": ["seo", "directories"],
    "xHandle": "verifieddr"
  }'
Response · 200
{
  "site": {
    "slug": "verifieddr-com",
    "url": "https://verifieddr.com",
    "dr": null,
    "trueDr": null,
    "drWeeklyChange": null,
    "drMonthlyChange": null,
    "trueDrWeeklyChange": null,
    "trueDrMonthlyChange": null,
    "globalRank": null,
    "organicTraffic": null,
    "trafficChange": null,
    "verified": false,
    "referringDomains": null,
    "backlinks": null
  },
  "created": true
}
GET/api/v1/sites/:slug

Get one site

Returns a single owned site plus its full DR and monthly traffic history. The :slug parameter accepts either the site slug (verifieddr-com) or the bare domain (verifieddr.com).

Response fields
siteobject
Same shape as a sites[] entry above.
drHistory[].datestring
Day the DR was recorded, as YYYY-MM-DD.
drHistory[].drnumber
Domain Rating on that day.
drHistory[].trueDrnumber | null
True Domain Rating recorded on that day, or null for older records.
drHistory[].globalRanknumber | null
Global rank on that day, when known.
trafficHistory[].datestring
Month of the estimate, as YYYY-MM.
trafficHistory[].trafficnumber
Estimated organic visits that month.
Request
curl https://verifieddr.com/api/v1/sites/verifieddr.com \
  -H "Authorization: Bearer vdr_your_api_key"
Response · 200
{
  "site": {
    "slug": "verifieddr-com",
    "url": "https://verifieddr.com",
    "dr": 42,
    "trueDr": 37,
    "drWeeklyChange": 1,
    "drMonthlyChange": 4,
    "trueDrWeeklyChange": 2,
    "trueDrMonthlyChange": 5,
    "globalRank": 120000,
    "organicTraffic": 8600,
    "trafficChange": 12,
    "verified": true,
    "referringDomains": 120,
    "backlinks": 540
  },
  "drHistory": [
    { "date": "2026-06-09", "dr": 41, "trueDr": 36, "globalRank": 121500 },
    { "date": "2026-06-10", "dr": 42, "trueDr": 37, "globalRank": 120000 }
  ],
  "trafficHistory": [
    { "date": "2026-05", "traffic": 7700 },
    { "date": "2026-06", "traffic": 8600 }
  ]
}
GET/api/v1/categories

List categories

Returns every category accepted in the tags field when submitting or updating a site. Public — no API key required.

Response fields
categories[].valuestring
The value to send in tags, for example customer-support.
categories[].labelstring
Display label, for example Customer Support. Also accepted in tags.
maxPerSitenumber
Maximum number of categories per site.
Request
curl https://verifieddr.com/api/v1/categories
Response · 200
{
  "categories": [
    { "value": "ai", "label": "AI" },
    { "value": "marketing", "label": "Marketing" },
    { "value": "seo", "label": "SEO" }
  ],
  "maxPerSite": 3
}

Errors

Failed requests return a JSON body with an error message explaining what went wrong.

StatusMeaning
401Missing or invalid API key. Pass it as Authorization: Bearer vdr_…
403API access requires an active Agency/API subscription.
404The site is not in your account.
429Rate limit exceeded — retry after the Retry-After header.
Error response
{ "error": "Site not found among your sites." }