Endpoint Playground
Searches the website tech-stack index (dataset id enum value `techstack`) — one record per site listing the web technologies it is built with (frameworks, CMS, e-commerce, analytics, CDNs, servers, and more), BuiltWith / Wappalyzer-style. The reverse-index filters are the point: repeat `technology` to require several at once (AND), `any_of` to match at least one (OR), and `not` to exclude — e.g. sites on `Shopify` and `Klaviyo` but not `Recharge`. Sort enum: `relevance`, `rank_asc`, `tech_count_desc`, `domain_asc`, `crawled_desc`. render_tier enum: `http`, `browser`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100). Dataset Playground requests query indexed data and do not apply proxy routing.
14 Oct 2026: Single record response; 5 fields had a value in every checked item; 1 field was empty in this sample.
Sample value profiles: total: 0.
curl "https://api.crawlora.net/api/v1/datasets/techstack/search?render_tier=http&sort=relevance" \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| q | string | No | Substring match on the site domain, max 256 characters | |
| technology | array | No | Repeatable exact technology name the site MUST use (AND), e.g. technology=Shopify&technology=Klaviyo | |
| any_of | array | No | Repeatable exact technology name; the site must use at least one (OR) | |
| not | array | No | Repeatable exact technology name the site must NOT use (excludes) | |
| category | string | No | Exact category filter, e.g. Ecommerce, CMS, Analytics, Payment, CDN | |
| cms | string | No | Exact CMS filter, e.g. WordPress, Shopify, Webflow | |
| ecommerce | string | No | Exact e-commerce platform filter, e.g. Shopify, WooCommerce, Magento | |
| cdn | string | No | Exact CDN / hosting filter, e.g. Cloudflare, Fastly, Vercel | |
| web_server | string | No | Exact web-server filter, e.g. nginx, Apache, IIS | |
| server_language | string | No | Exact server language / framework filter, e.g. PHP, ASP.NET, Ruby on Rails | |
| tld | string | No | Exact top-level-domain filter, e.g. com, org, io | |
| render_tier | string | No | http | Fetch-tier filter. Enum: http, browser |
| seed_source | string | No | Source filter for where the domain was discovered, e.g. tranco | |
| has_captcha | boolean | No | true keeps only sites with a detected CAPTCHA | |
| is_infrastructure | boolean | No | false (the common case) excludes backend CDN/DNS/cloud-vendor hostnames that rank highly but were never meant to serve a public homepage, keeping only real, human-navigable sites; true keeps only those backend hostnames | |
| reachable | boolean | No | true keeps only sites whose homepage was fetched, false only sites that could not be fetched | |
| min_tech_count | integer | No | Minimum number of detected technologies, 0 or greater | |
| run_id | string | No | Scan run id; defaults to the latest run | |
| sort | string | No | relevance | Sort enum: relevance, rank_asc, tech_count_desc, domain_asc, crawled_desc |
| page | integer | No | Page number, defaults to 1 | |
| page_size | integer | No | Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000 |
{
"code": 200,
"msg": "OK",
"data": {
"dataset": "techstack",
"items": [
{
"domain": "example-store.com",
"tld": "com",
"rank": 5231,
"reachable": true,
"technologies": [
{
"name": "Shopify",
"categories": [
"Ecommerce"
],
"confidence": "high",
"evidence": "markup: cdn.shopify.com"
},
{
"name": "Cloudflare",
"categories": [
"CDN"
],
"confidence": "high",
"evidence": "header: cf-ray"
}
],
"technology_names": [
"Shopify",
"Cloudflare"
],
"categories": [
"CDN",
"Ecommerce"
],
"tech_count": 2,
"ecommerce": "Shopify",
"cdn": "Cloudflare",
"render_tier": "http",
"detector_version": "2026.07.4"
}
],
"page": 1,
"page_size": 20,
"total": 1,
"sort": "rank_asc"
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.