RankParse

Tech Stack

Detect the frameworks, CMS, analytics, CDN, hosting and other technologies a domain runs, from a live homepage fetch plus link graph signals.

GET/v1/tech-stack2 credits (refunded on failure)API key

Detects the technologies behind a domain. It fetches the homepage live and matches fingerprints in the HTML and response headers, and in parallel looks up link graph data to catch technologies the homepage does not show directly. Use it for lead enrichment, competitor research or platform targeting.

Request

Parameters

NameTypeRequiredDefaultDescription
domainstringYesnoneBare domain such as vercel.com. No scheme, path or port.

Example

curl "https://api.rankparse.com/v1/tech-stack?domain=vercel.com" \
  -H "X-API-Key: rp_your_key"
import requests

resp = requests.get(
    "https://api.rankparse.com/v1/tech-stack",
    params={"domain": "vercel.com"},
    headers={"X-API-Key": "rp_your_key"},
    timeout=45,
)
resp.raise_for_status()
for tech in resp.json()["data"]["technologies"]:
    print(tech["category"], tech["name"], tech["confidence"])
const res = await fetch(
  "https://api.rankparse.com/v1/tech-stack?domain=vercel.com",
  { headers: { "X-API-Key": process.env.RANKPARSE_API_KEY } }
);
if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);
const { data } = await res.json();
for (const t of data.technologies) console.log(t.category, t.name, t.confidence);

Response

{
  "domain": "vercel.com",
  "data": {
    "domain": "vercel.com",
    "technologies": [
      { "name": "Next.js", "category": "framework", "confidence": "definite" },
      { "name": "React", "category": "framework", "confidence": "high" },
      { "name": "Cloudflare", "category": "cdn", "confidence": "definite" },
      { "name": "Vercel", "category": "hosting", "confidence": "definite" },
      { "name": "Google Analytics 4", "category": "analytics", "confidence": "definite" }
    ],
    "server": "cloudflare",
    "x_powered_by": null,
    "response_time_ms": 241
  },
  "credits_used": 2,
  "credits_remaining": 998
}

Response fields

FieldTypeDescription
technologiesarrayDetected technologies, live detections first, then any link graph additions. Each has name, category and confidence. Empty when nothing matched.
technologies[].categorystringOne of the categories below.
technologies[].confidencestringdefinite, high or medium.
serverstring or nullValue of the homepage Server header.
x_powered_bystring or nullValue of the homepage X-Powered-By header.
response_time_msintegerTime taken by the live homepage fetch.

Categories

CategoryExamples
frameworkNext.js, Nuxt, Gatsby, React, Vue, Angular, Svelte, Remix, Astro
cmsWordPress, Ghost, Webflow, Framer, Squarespace, Wix, Drupal
ecommerceShopify, WooCommerce, BigCommerce, Magento
analyticsGoogle Analytics, GTM, Meta Pixel, Hotjar, PostHog, Plausible, Segment
cdnCloudflare, AWS CloudFront, Fastly, Akamai
hostingVercel, Netlify, Fly.io, Render, Railway
email_marketingKlaviyo, Mailchimp, ConvertKit
ab_testingOptimizely, VWO, AB Tasty
paymentsStripe, PayPal, Paddle
crmHubSpot, ActiveCampaign
supportIntercom, Zendesk, Crisp, Drift

Confidence levels

  • definite: a unique identifier in the headers or HTML (for example the cf-ray header means Cloudflare).
  • high: a strong pattern match (for example __NEXT_DATA__ in the HTML means Next.js).
  • medium: a weaker signal that can produce false positives.

Behavior and limits

  • Two sources, merged by name. The live homepage fetch takes precedence. Technologies that the link graph lookup finds but the live page does not show (for example a script or CDN host the site links to) are added. The response does not mark which source produced each entry.
  • Lookup budget. The link graph lookup is cut off after 12 seconds; if it is slow, you get the live result alone rather than waiting.
  • Homepage only. Live detection reads the homepage's HTML and headers. Technologies loaded only after JavaScript runs may be missed, and inner pages are not inspected.
  • Fetch limits. 8 second timeout for the homepage, 2 MB body cap, up to 5 redirects, public hosts only. See Page SEO for the fetch rules.
  • Billing. Costs 2 credits; refunded automatically on any non-2xx response. Invalid or private domains are rejected before billing. Subject to the standard 60 requests per minute limit.

Errors

StatusCodeWhen
400invalid_urldomain is missing, not a bare domain, or longer than 253 characters.
400private_ipDomain is a private, reserved or local host.
400response_too_largeThe homepage exceeded 2 MB.
401invalid_api_keyMissing, invalid or revoked key.
402insufficient_creditsBalance below 2 credits.
402spend_cap_reachedMonthly spend cap reached.
429rate_limitedMore than 60 requests per minute.
503fetch_failedThe homepage was unreachable or redirected too many times.
503timeoutThe homepage did not respond within 8 seconds.

See Errors for the shared error format.

MCP tool: get_tech_stack.

On this page