{
 "schema_version": 1,
 "source": "https://nativeport.ai/evals.json",
 "latest_run": "2026-09-14",
 "methodology": "One fixed task corpus per capability, identical for every provider; scorecards carry their run dates. Weak scores stay published. Details: https://nativeport.ai/methodology/",
 "gateway": {
  "base_url": "https://api.nativeport.ai",
  "auth": "Authorization: Bearer <your NativePort API key>",
  "route_rule": "/{provider}/{provider-native-path} — forwarded to the provider's native API, response returned unmodified. Exception: a provider entry carrying `call_method` is mounted on one literal route instead — send that method to its `call` URL exactly as published (with its `call_body` payload where the entry has one); no other path under that prefix is mounted.",
  "empty_balance": "HTTP 402 until credits are added (deterministic; optional auto-top-up)",
  "sign_up": "https://accounts.nativeport.ai/sign-up",
  "panel": "https://panel.nativeport.ai",
  "docs": "https://docs.nativeport.ai",
  "pricing": "https://nativeport.ai/pricing/"
 },
 "verbs": {
  "search": {
   "label": "Search",
   "description": "Web search: a query in, ranked result links out"
  },
  "scrape": {
   "label": "Scrape",
   "description": "Fetch one URL as clean content/markdown, anti-bot handled"
  },
  "crawl": {
   "label": "Crawl",
   "description": "Enumerate and fetch many pages across a site"
  },
  "extract_ai": {
   "label": "Extract · AI/schema",
   "description": "Structured fields pulled from a page against an AI/natural-language schema"
  },
  "extract_rules": {
   "label": "Extract · CSS rules",
   "description": "Structured fields pulled from a page via CSS/XPath rules"
  },
  "answer": {
   "label": "Answer",
   "description": "A question in, a synthesized answer with cited sources out"
  },
  "screenshot": {
   "label": "Screenshot",
   "description": "Rendered image of a URL"
  },
  "scrape_domain": {
   "label": "Scrape-domain",
   "description": "Purpose-built scrapers for hard, high-value domains (e-commerce, social)"
  },
  "act": {
   "label": "Act · declarative",
   "description": "Declarative in-page interactions (click, fill, scroll) in one call"
  },
  "act_agent": {
   "label": "Act · NL-agent",
   "description": "A natural-language goal handed to an autonomous browser agent"
  },
  "serp": {
   "label": "SERP verticals",
   "description": "Google SERP verticals (web, news, images, places, scholar) as structured JSON"
  },
  "parse": {
   "label": "Parse · PDF/doc",
   "description": "PDF/document to text, with OCR where the provider supports it"
  },
  "watch": {
   "label": "Watch",
   "description": "Change detection / monitoring on a URL"
  }
 },
 "providers": {
  "serper": {
   "name": "Serper",
   "group": "Search",
   "category": "Google SERP scrape",
   "tier": "T1",
   "route": "/serper",
   "call": "https://api.nativeport.ai/serper/<native-path>",
   "docs": "https://docs.nativeport.ai/serper",
   "page": "https://nativeport.ai/providers/serper/",
   "pricing_entry": "$0.001055 per credit (typically 1 → $0.001055)",
   "latency_note": "~0.6–1.7s",
   "provider_mcp": "community",
   "summary": "Google search results across web, news, images, places, maps and scholar verticals, plus an endpoint for scraping webpages.",
   "choose_if": "Pick it when the goal is the lowest-cost Google grounding and you'll synthesize the results on your own.",
   "avoid_if": "Not the pick if you require coverage beyond Google, richer SERP elements, or content extraction out of the box.",
   "evals": [
    {
     "verb": "serp",
     "label": "SERP verticals",
     "composite": 9.34,
     "rank": 1,
     "of": 4,
     "top": true,
     "measured": "2026-09-14",
     "note": "Lowest cost and latency; Google only.",
     "metrics": [
      {
       "key": "quality",
       "label": "Quality",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 1593.4,
       "value": "1.6 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.001,
       "value": "$0.001 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "search",
     "label": "Search",
     "composite": 7.29,
     "rank": 4,
     "of": 11,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "recall_at_10",
       "label": "Recall@10",
       "raw": 0.602,
       "value": "0.60"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 1272.1,
       "value": "1.3 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.001662,
       "value": "$0.0017 / useful result"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "serpapi": {
   "name": "SerpApi",
   "group": "Search",
   "category": "Multi-engine SERP scrape",
   "tier": "T1",
   "route": "/serpapi",
   "call": "https://api.nativeport.ai/serpapi/<native-path>",
   "docs": "https://docs.nativeport.ai/serpapi",
   "page": "https://nativeport.ai/providers/serpapi/",
   "pricing_entry": "$0.0264 per call",
   "latency_note": "~1.7–2.0s",
   "provider_mcp": "official",
   "summary": "Google plus 80+ additional search engines as structured results — key handling is taken off your plate.",
   "choose_if": "The right call for compliance-sensitive teams, for breadth across many engines, or as the drop-in default in LangChain.",
   "avoid_if": "Skip it when queries are Google-only and price matters — Serper undercuts it there.",
   "evals": [
    {
     "verb": "serp",
     "label": "SERP verticals",
     "composite": 6.28,
     "rank": 4,
     "of": 4,
     "top": false,
     "measured": "2026-09-14",
     "note": "Every tested vertical is covered.",
     "metrics": [
      {
       "key": "quality",
       "label": "Quality",
       "raw": 0.682,
       "value": "0.68"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 5706.9,
       "value": "5.7 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.025,
       "value": "$0.025 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 27.3,
       "value": "27%"
      }
     ]
    },
    {
     "verb": "search",
     "label": "Search",
     "composite": 5.74,
     "rank": 9,
     "of": 11,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "recall_at_10",
       "label": "Recall@10",
       "raw": 0.417,
       "value": "0.42"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 1064.2,
       "value": "1.1 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.06,
       "value": "$0.06 / useful result"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 16.67,
       "value": "17%"
      }
     ]
    }
   ]
  },
  "searchapi": {
   "name": "SearchAPI.io",
   "group": "Search",
   "category": "Multi-engine SERP scrape",
   "tier": "T2",
   "route": "/searchapi",
   "call": "https://api.nativeport.ai/searchapi/<native-path>",
   "docs": "https://docs.nativeport.ai/searchapi",
   "page": "https://nativeport.ai/providers/searchapi/",
   "pricing_entry": "$0.00422 per call",
   "latency_note": "real-time",
   "provider_mcp": "official",
   "summary": "One endpoint serving search results from 80-plus engines, Google, Bing and YouTube among them.",
   "choose_if": "Reach for it if you're after SerpApi-compatible JSON, cheaper, and billed only per successful search.",
   "avoid_if": "The catch: since Sept-2025 the num parameter is silently capped at 10, so large Google result pages are out.",
   "evals": [
    {
     "verb": "serp",
     "label": "SERP verticals",
     "composite": 9.03,
     "rank": 2,
     "of": 4,
     "top": false,
     "measured": "2026-09-14",
     "note": "Widest vertical coverage, with SerpApi-compatible JSON.",
     "metrics": [
      {
       "key": "quality",
       "label": "Quality",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 2903.1,
       "value": "2.9 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.004,
       "value": "$0.004 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "search",
     "label": "Search",
     "composite": 6.22,
     "rank": 7,
     "of": 11,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "recall_at_10",
       "label": "Recall@10",
       "raw": 0.583,
       "value": "0.58"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 4334.2,
       "value": "4.3 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.006857,
       "value": "$0.0069 / useful result"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "brave": {
   "name": "Brave Search",
   "group": "Search",
   "category": "Independent crawler index",
   "tier": "T1",
   "route": "/brave",
   "call": "https://api.nativeport.ai/brave/<native-path>",
   "docs": "https://docs.nativeport.ai/brave",
   "page": "https://nativeport.ai/providers/brave/",
   "pricing_entry": "$0.005275 per call",
   "latency_note": null,
   "provider_mcp": "official",
   "summary": "A 30B+ page search index built independently, spanning news, video, image and web verticals.",
   "choose_if": "Pick it when independence from Google and Bing matters, along with a privacy posture and grounding for AI.",
   "avoid_if": "Skip it when a single query has to return more than roughly 200 results.",
   "evals": [
    {
     "verb": "search",
     "label": "Search",
     "composite": 7.36,
     "rank": 3,
     "of": 11,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "recall_at_10",
       "label": "Recall@10",
       "raw": 0.657,
       "value": "0.66"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 679.0,
       "value": "679 ms"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.007606,
       "value": "$0.0076 / useful result"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ],
   "unscored_in_run": [
    {
     "verb": "answer",
     "label": "Answer",
     "reason": "Not scored in the 2026-09-14 run.",
     "status": "unscored_in_run",
     "measured": "2026-09-14",
     "note": "Not scored in the 2026-09-14 run."
    }
   ]
  },
  "youcom": {
   "name": "You.com",
   "group": "Search",
   "category": "Own crawl index + Research API",
   "tier": "T2",
   "route": "/youcom",
   "call": "https://api.nativeport.ai/youcom/<native-path>",
   "docs": "https://docs.nativeport.ai/youcom",
   "page": "https://nativeport.ai/providers/youcom/",
   "pricing_entry": "$0.005275 per call",
   "latency_note": null,
   "provider_mcp": "official",
   "summary": "Own-index web search with an accompanying Research API that cites sources, aimed at grounding LLMs.",
   "choose_if": "For teams that want soft domain-boosting on an independent index, with a Research API that returns cited answers.",
   "avoid_if": "Not the pick if a flat response shape matters: results sit nested in results.web[] with snippets[], so an adapter is required.",
   "evals": [
    {
     "verb": "search",
     "label": "Search",
     "composite": 7.82,
     "rank": 1,
     "of": 11,
     "top": true,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "recall_at_10",
       "label": "Recall@10",
       "raw": 0.671,
       "value": "0.67"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 692.9,
       "value": "693 ms"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.007448,
       "value": "$0.0074 / useful result"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "answer",
     "label": "Answer",
     "composite": 7.36,
     "rank": 3,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "answer_correctness",
       "label": "Correctness",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "citation_faithfulness",
       "label": "Citation faithfulness",
       "raw": 0.365,
       "value": "0.36"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 3893.4,
       "value": "3.9 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.02,
       "value": "$0.02 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "dataforseo": {
   "name": "DataForSEO",
   "group": "Search",
   "category": "SEO & SERP data platform",
   "tier": "T2",
   "route": "/dataforseo",
   "call": "https://api.nativeport.ai/dataforseo/<native-path>",
   "docs": "https://docs.nativeport.ai/dataforseo",
   "page": "https://nativeport.ai/providers/dataforseo/",
   "pricing_entry": "metered by DataForSEO",
   "latency_note": "~5s std / ~6s live",
   "provider_mcp": "official",
   "summary": "SERP and SEO intelligence — keywords, rankings, backlinks — with the deepest taxonomy of SERP elements.",
   "choose_if": "Reach for it if the job is bulk asynchronous SERP scraping with webhooks and the fullest SERP-feature taxonomy.",
   "avoid_if": "The catch: responses nest deeply (tasks[].result[].items[]) and latency isn't low, which is genuine friction.",
   "evals": [
    {
     "verb": "serp",
     "label": "SERP verticals",
     "composite": 9.0,
     "rank": 3,
     "of": 4,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "quality",
       "label": "Quality",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 4053.2,
       "value": "4.1 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.002,
       "value": "$0.002 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "search",
     "label": "Search",
     "composite": 5.72,
     "rank": 10,
     "of": 11,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "recall_at_10",
       "label": "Recall@10",
       "raw": 0.556,
       "value": "0.56"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 9116.5,
       "value": "9.1 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.0036,
       "value": "$0.0036 / useful result"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "tavily": {
   "name": "Tavily",
   "group": "Search",
   "category": "Agent-native search index",
   "tier": "T1",
   "route": "/tavily",
   "call": "https://api.nativeport.ai/tavily/<native-path>",
   "docs": "https://docs.nativeport.ai/tavily",
   "page": "https://nativeport.ai/providers/tavily/",
   "pricing_entry": "$0.00844 per credit (typically 1 → $0.00844)",
   "latency_note": "~1.0s",
   "provider_mcp": "official",
   "summary": "A search index native to agents and RAG, returning snippets with relevance scores and an optional answer.",
   "choose_if": "Pick it when you're building the typical agent or RAG stack and want relevance scores plus an optional answer from a single call.",
   "avoid_if": "Not the pick if per-result dates matter, or if a documented SLA/compliance posture is required.",
   "evals": [
    {
     "verb": "crawl",
     "label": "Crawl",
     "composite": 8.91,
     "rank": 1,
     "of": 4,
     "top": true,
     "measured": "2026-09-14",
     "note": "Performs well through its /map variant.",
     "metrics": [
      {
       "key": "coverage",
       "label": "Coverage",
       "raw": 0.88,
       "value": "0.88"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 522.6,
       "value": "523 ms"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.0125,
       "value": "$0.013 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "answer",
     "label": "Answer",
     "composite": 7.28,
     "rank": 4,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "answer_correctness",
       "label": "Correctness",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "citation_faithfulness",
       "label": "Citation faithfulness",
       "raw": 0.301,
       "value": "0.30"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 2450.4,
       "value": "2.5 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.008,
       "value": "$0.008 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "search",
     "label": "Search",
     "composite": 5.97,
     "rank": 8,
     "of": 11,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "recall_at_10",
       "label": "Recall@10",
       "raw": 0.454,
       "value": "0.45"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 2360.0,
       "value": "2.4 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.017633,
       "value": "$0.018 / useful result"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "exa": {
   "name": "Exa",
   "group": "Search",
   "category": "Neural + keyword index",
   "tier": "T1",
   "route": "/exa",
   "call": "https://api.nativeport.ai/exa/<native-path>",
   "docs": "https://docs.nativeport.ai/exa",
   "page": "https://nativeport.ai/providers/exa/",
   "pricing_entry": "metered by Exa",
   "latency_note": null,
   "provider_mcp": "official",
   "summary": "Semantic search driven by neural embeddings, offering find-similar, clean extraction and an integrated answer endpoint.",
   "choose_if": "Reach for it if the task is semantic discovery, find-similar lookups, research, or using its built-in /answer endpoint.",
   "avoid_if": "Skip it when full keyword/SERP parity is required; content and summary are billed per page and per type, and those charges stack.",
   "evals": [
    {
     "verb": "answer",
     "label": "Answer",
     "composite": 8.01,
     "rank": 1,
     "of": 6,
     "top": true,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "answer_correctness",
       "label": "Correctness",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "citation_faithfulness",
       "label": "Citation faithfulness",
       "raw": 0.522,
       "value": "0.52"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 1539.5,
       "value": "1.5 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.005,
       "value": "$0.005 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "search",
     "label": "Search",
     "composite": 6.78,
     "rank": 6,
     "of": 11,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "recall_at_10",
       "label": "Recall@10",
       "raw": 0.634,
       "value": "0.63"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 1673.5,
       "value": "1.7 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.013401,
       "value": "$0.013 / useful result"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "linkup": {
   "name": "Linkup",
   "group": "Search",
   "category": "Own crawl index",
   "tier": "T2",
   "route": "/linkup",
   "call": "https://api.nativeport.ai/linkup/<native-path>",
   "docs": "https://docs.nativeport.ai/linkup",
   "page": "https://nativeport.ai/providers/linkup/",
   "pricing_entry": "$0.00633 per call",
   "latency_note": null,
   "provider_mcp": "official",
   "summary": "A search alternative that stays ToS-clean, offering sourced answers natively, structured JSON output, and markdown via /fetch.",
   "choose_if": "The right call when compliance matters and you want a SERP alternative that returns sourced answers and structured JSON natively.",
   "avoid_if": "The catch: no relevance scores, no per-result dates, and no geo controls are exposed.",
   "evals": [
    {
     "verb": "answer",
     "label": "Answer",
     "composite": 6.62,
     "rank": 5,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "answer_correctness",
       "label": "Correctness",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "citation_faithfulness",
       "label": "Citation faithfulness",
       "raw": 0.065,
       "value": "0.07"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 1618.7,
       "value": "1.6 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.006,
       "value": "$0.006 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "search",
     "label": "Search",
     "composite": 4.05,
     "rank": 11,
     "of": 11,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "recall_at_10",
       "label": "Recall@10",
       "raw": 0.102,
       "value": "0.10"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 3263.8,
       "value": "3.3 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.058909,
       "value": "$0.059 / useful result"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "parallel": {
   "name": "Parallel",
   "group": "Search",
   "category": "Agent-optimized search index",
   "tier": "T2",
   "route": "/parallel",
   "call": "https://api.nativeport.ai/parallel/<native-path>",
   "docs": "https://docs.nativeport.ai/parallel",
   "page": "https://nativeport.ai/providers/parallel/",
   "pricing_entry": "$0.005275 per call",
   "latency_note": "P50 <1s",
   "provider_mcp": "official + no-key MCP",
   "summary": "An agent-optimized index where the ranking follows a natural-language objective; results arrive as pre-compressed excerpts.",
   "choose_if": "Pick it for the least in-loop friction: a Search MCP that needs no key, with P50 under a second.",
   "avoid_if": "Not the pick if the Search response itself must include full content, relevance scores, or an answer already synthesized.",
   "evals": [
    {
     "verb": "answer",
     "label": "Answer",
     "composite": 7.92,
     "rank": 2,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "answer_correctness",
       "label": "Correctness",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "citation_faithfulness",
       "label": "Citation faithfulness",
       "raw": 0.647,
       "value": "0.65"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 25038.4,
       "value": "25.0 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.01,
       "value": "$0.01 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "search",
     "label": "Search",
     "composite": 6.97,
     "rank": 5,
     "of": 11,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "recall_at_10",
       "label": "Recall@10",
       "raw": 0.606,
       "value": "0.61"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 1819.5,
       "value": "1.8 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.008244,
       "value": "$0.0082 / useful result"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "jina": {
   "name": "Jina",
   "group": "Search",
   "category": "Search + read-to-markdown",
   "tier": "T2",
   "route": "/jina",
   "call": "https://api.nativeport.ai/jina/<native-path>",
   "docs": "https://docs.nativeport.ai/jina",
   "page": "https://nativeport.ai/providers/jina/",
   "pricing_entry": "$0.00000002 per token (typically 5000 → $0.000106)",
   "latency_note": "low RPM",
   "provider_mcp": "official",
   "summary": "A URL-to-markdown Reader that benchmarks at the top of its class, plus search that hands back full-page markdown in a single call.",
   "choose_if": "Reach for it if a URL needs to become clean, LLM-ready markdown, or you want search and read combined in one call.",
   "avoid_if": "Skip it when high search RPM or lots of results per query matter — the default is ≤5 results and RPM runs low.",
   "evals": [
    {
     "verb": "parse",
     "label": "Parse · PDF/doc",
     "composite": 8.05,
     "rank": 2,
     "of": 3,
     "top": false,
     "measured": "2026-09-14",
     "note": "No OCR: scanned PDFs come back empty.",
     "metrics": [
      {
       "key": "text_accuracy",
       "label": "Text accuracy",
       "raw": 0.78,
       "value": "0.78"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 2125.3,
       "value": "2.1 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.000128,
       "value": "$0.00013 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "search",
     "label": "Search",
     "composite": 7.58,
     "rank": 2,
     "of": 11,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "recall_at_10",
       "label": "Recall@10",
       "raw": 0.602,
       "value": "0.60"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 1619.9,
       "value": "1.6 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.000332,
       "value": "$0.00033 / useful result"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "answer",
     "label": "Answer",
     "composite": 6.51,
     "rank": 6,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "answer_correctness",
       "label": "Correctness",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "citation_faithfulness",
       "label": "Citation faithfulness",
       "raw": 0.078,
       "value": "0.08"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 3103.1,
       "value": "3.1 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.02,
       "value": "$0.02 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "scraperapi": {
   "name": "ScraperAPI",
   "group": "Scraping & Crawling",
   "category": "Single-call scraping API",
   "tier": "T1",
   "route": "/scraperapi",
   "call": "https://api.nativeport.ai/scraperapi/<native-path>",
   "docs": "https://docs.nativeport.ai/scraperapi",
   "page": "https://nativeport.ai/providers/scraperapi/",
   "pricing_entry": "$0.000517 per credit (typically 1 → $0.000517)",
   "latency_note": null,
   "provider_mcp": "none",
   "summary": "General scraping behind a single GET, with proxy rotation and automatic retries handled.",
   "choose_if": "The right call when the simplest unblocking request wins and MCP-native discovery isn't on your list.",
   "avoid_if": "The catch: credit multipliers make costs hard to see upfront, and there's no first-party MCP.",
   "evals": [
    {
     "verb": "screenshot",
     "label": "Screenshot",
     "composite": 7.09,
     "rank": 7,
     "of": 8,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "valid_image_rate",
       "label": "Valid image",
       "raw": 0.75,
       "value": "0.75"
      },
      {
       "key": "full_page_support",
       "label": "Full-page",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 34765.8,
       "value": "34.8 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.0049,
       "value": "$0.0049 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 25.0,
       "value": "25%"
      }
     ]
    },
    {
     "verb": "scrape",
     "label": "Scrape",
     "composite": 6.57,
     "rank": 8,
     "of": 10,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "block_bypass_success_rate",
       "label": "Anti-bot bypass",
       "raw": 0.625,
       "value": "62%"
      },
      {
       "key": "markdown_cleanliness",
       "label": "Markdown clean",
       "raw": 4.4,
       "value": "4.4 / 10"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 1660.9,
       "value": "1.7 s"
      },
      {
       "key": "cost_per_successful_page_usd",
       "label": "Cost",
       "raw": 0.010192,
       "value": "$0.01 / success"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 37.5,
       "value": "38%"
      }
     ]
    },
    {
     "verb": "scrape_domain",
     "label": "Scrape-domain",
     "composite": 5.02,
     "rank": 6,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "value_accuracy",
       "label": "Accuracy",
       "raw": 0.356,
       "value": "0.36"
      },
      {
       "key": "field_fill",
       "label": "Field fill",
       "raw": 0.778,
       "value": "0.78"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 4026.3,
       "value": "4.0 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.013764,
       "value": "$0.014 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "firecrawl": {
   "name": "Firecrawl",
   "group": "Scraping & Crawling",
   "category": "Scrape + crawl + extract",
   "tier": "T1",
   "route": "/firecrawl",
   "call": "https://api.nativeport.ai/firecrawl/<native-path>",
   "docs": "https://docs.nativeport.ai/firecrawl",
   "page": "https://nativeport.ai/providers/firecrawl/",
   "pricing_entry": "$0.003376 per credit (typically 1 → $0.003376)",
   "latency_note": null,
   "provider_mcp": "official",
   "summary": "LLM-ready markdown that tops the benchmarks, plus schema-driven extraction, asynchronous crawling and an official MCP.",
   "choose_if": "Pick it for the top-scoring scrape and markdown quality, with crawl, scrape, screenshot and extract on one surface.",
   "avoid_if": "Skip it when hard targets meet a tight budget: stealth plus JSON output stacks to about 5–9 times the base credit.",
   "evals": [
    {
     "verb": "scrape",
     "label": "Scrape",
     "composite": 9.02,
     "rank": 2,
     "of": 10,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "block_bypass_success_rate",
       "label": "Anti-bot bypass",
       "raw": 0.875,
       "value": "88%"
      },
      {
       "key": "markdown_cleanliness",
       "label": "Markdown clean",
       "raw": 9.57,
       "value": "9.6 / 10"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 650.6,
       "value": "651 ms"
      },
      {
       "key": "cost_per_successful_page_usd",
       "label": "Cost",
       "raw": 0.003657,
       "value": "$0.0037 / success"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 12.5,
       "value": "12%"
      }
     ]
    },
    {
     "verb": "screenshot",
     "label": "Screenshot",
     "composite": 9.0,
     "rank": 1,
     "of": 8,
     "top": true,
     "measured": "2026-09-14",
     "note": "Highest rate of valid images.",
     "metrics": [
      {
       "key": "valid_image_rate",
       "label": "Valid image",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "full_page_support",
       "label": "Full-page",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 5147.8,
       "value": "5.1 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.0032,
       "value": "$0.0032 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "extract_ai",
     "label": "Extract · AI/schema",
     "composite": 8.76,
     "rank": 1,
     "of": 4,
     "top": true,
     "measured": "2026-09-14",
     "note": "On the precision test it hallucinated a null field.",
     "metrics": [
      {
       "key": "field_accuracy",
       "label": "Field accuracy",
       "raw": 0.954,
       "value": "0.95"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 2635.0,
       "value": "2.6 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.003354,
       "value": "$0.0034 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "parse",
     "label": "Parse · PDF/doc",
     "composite": 8.61,
     "rank": 1,
     "of": 3,
     "top": true,
     "measured": "2026-09-14",
     "note": "Scanned-PDF OCR sets it apart.",
     "metrics": [
      {
       "key": "text_accuracy",
       "label": "Text accuracy",
       "raw": 0.907,
       "value": "0.91"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 841.9,
       "value": "842 ms"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.003528,
       "value": "$0.0035 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "crawl",
     "label": "Crawl",
     "composite": 8.17,
     "rank": 2,
     "of": 4,
     "top": false,
     "measured": "2026-09-14",
     "note": "Clean path-scoped enumeration; Tavily's map now covers more of the corpus.",
     "metrics": [
      {
       "key": "coverage",
       "label": "Coverage",
       "raw": 0.84,
       "value": "0.84"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 13936.7,
       "value": "13.9 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.025714,
       "value": "$0.026 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "watch",
     "label": "Watch",
     "composite": 8.14,
     "rank": 1,
     "of": 1,
     "top": true,
     "measured": "2026-09-14",
     "note": "Uniquely offers synchronous change detection.",
     "metrics": [
      {
       "key": "classification_accuracy",
       "label": "Class. accuracy",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "diff_quality",
       "label": "Diff quality",
       "raw": 0.5,
       "value": "0.50"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 3689.9,
       "value": "3.7 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.0032,
       "value": "$0.0032 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "act_agent",
     "label": "Act · NL-agent",
     "composite": 7.99,
     "rank": 1,
     "of": 1,
     "top": true,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "task_success",
       "label": "Task success",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 45408.2,
       "value": "45.4 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.05,
       "value": "$0.05 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "act",
     "label": "Act · declarative",
     "composite": 7.47,
     "rank": 4,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "task_success",
       "label": "Task success",
       "raw": 0.8,
       "value": "0.80"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 4765.8,
       "value": "4.8 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.0032,
       "value": "$0.0032 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "scrapingbee": {
   "name": "ScrapingBee",
   "group": "Scraping & Crawling",
   "category": "Single-call scraping API",
   "tier": "T2",
   "route": "/scrapingbee",
   "call": "https://api.nativeport.ai/scrapingbee/<native-path>",
   "docs": "https://docs.nativeport.ai/scrapingbee",
   "page": "https://nativeport.ai/providers/scrapingbee/",
   "pricing_entry": "$0.000207 per credit (typically 5 → $0.001034)",
   "latency_note": null,
   "provider_mcp": "official",
   "summary": "A single REST surface: JS rendering, residential and stealth proxies, extraction via AI or CSS, markdown out.",
   "choose_if": "For teams that want stealth, rendering, declarative actions and extraction consolidated into one endpoint.",
   "avoid_if": "The catch: costs climb quickly — JS rendering defaults to on at 5 credits, and stealth runs 75.",
   "evals": [
    {
     "verb": "extract_rules",
     "label": "Extract · CSS rules",
     "composite": 9.2,
     "rank": 1,
     "of": 3,
     "top": true,
     "measured": "2026-09-14",
     "note": "Top-ranked rule-based extractor, at a fraction of AI-extract cost.",
     "metrics": [
      {
       "key": "field_accuracy",
       "label": "Field accuracy",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 3012.1,
       "value": "3.0 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.00098,
       "value": "$0.00098 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "act",
     "label": "Act · declarative",
     "composite": 8.97,
     "rank": 1,
     "of": 6,
     "top": true,
     "measured": "2026-09-14",
     "note": "Declarative browser actions: strongest showing.",
     "metrics": [
      {
       "key": "task_success",
       "label": "Task success",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 5364.3,
       "value": "5.4 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.00098,
       "value": "$0.00098 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "screenshot",
     "label": "Screenshot",
     "composite": 8.52,
     "rank": 3,
     "of": 8,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "valid_image_rate",
       "label": "Valid image",
       "raw": 0.875,
       "value": "0.88"
      },
      {
       "key": "full_page_support",
       "label": "Full-page",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 4212.4,
       "value": "4.2 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.00098,
       "value": "$0.00098 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 12.5,
       "value": "12%"
      }
     ]
    },
    {
     "verb": "extract_ai",
     "label": "Extract · AI/schema",
     "composite": 8.01,
     "rank": 2,
     "of": 4,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "field_accuracy",
       "label": "Field accuracy",
       "raw": 0.893,
       "value": "0.89"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 3799.1,
       "value": "3.8 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.017559,
       "value": "$0.018 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "scrape",
     "label": "Scrape",
     "composite": 7.37,
     "rank": 5,
     "of": 10,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "block_bypass_success_rate",
       "label": "Anti-bot bypass",
       "raw": 0.75,
       "value": "75%"
      },
      {
       "key": "markdown_cleanliness",
       "label": "Markdown clean",
       "raw": 4.0,
       "value": "4.0 / 10"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 2519.6,
       "value": "2.5 s"
      },
      {
       "key": "cost_per_successful_page_usd",
       "label": "Cost",
       "raw": 0.005733,
       "value": "$0.0057 / success"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 12.5,
       "value": "12%"
      }
     ]
    },
    {
     "verb": "scrape_domain",
     "label": "Scrape-domain",
     "composite": 5.82,
     "rank": 4,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "value_accuracy",
       "label": "Accuracy",
       "raw": 0.491,
       "value": "0.49"
      },
      {
       "key": "field_fill",
       "label": "Field fill",
       "raw": 0.842,
       "value": "0.84"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 3423.3,
       "value": "3.4 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.019959,
       "value": "$0.02 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 10.5,
       "value": "10%"
      }
     ]
    }
   ]
  },
  "scrapfly": {
   "name": "Scrapfly",
   "group": "Scraping & Crawling",
   "category": "Single-call scraping API",
   "tier": "T1",
   "route": "/scrapfly",
   "call": "https://api.nativeport.ai/scrapfly/<native-path>",
   "docs": "https://docs.nativeport.ai/scrapfly",
   "page": "https://nativeport.ai/providers/scrapfly/",
   "pricing_entry": "$0.000158 per credit (typically 1 → $0.000159)",
   "latency_note": null,
   "provider_mcp": "official",
   "summary": "Strong anti-bot bypass behind a single flag (asp=true), markdown and AI output, and a per-response cost breakdown.",
   "choose_if": "Pick it when clearing the anti-bot vendors matters alongside the top measured AI-extraction accuracy.",
   "avoid_if": "Not the pick if crawling or credit rollover matters; expect hard targets to cost around 30 credits per request.",
   "evals": [
    {
     "verb": "scrape",
     "label": "Scrape",
     "composite": 9.44,
     "rank": 1,
     "of": 10,
     "top": true,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "block_bypass_success_rate",
       "label": "Anti-bot bypass",
       "raw": 1.0,
       "value": "100%"
      },
      {
       "key": "markdown_cleanliness",
       "label": "Markdown clean",
       "raw": 9.62,
       "value": "9.6 / 10"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 4158.9,
       "value": "4.2 s"
      },
      {
       "key": "cost_per_successful_page_usd",
       "label": "Cost",
       "raw": 0.004481,
       "value": "$0.0045 / success"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "screenshot",
     "label": "Screenshot",
     "composite": 7.95,
     "rank": 4,
     "of": 8,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "valid_image_rate",
       "label": "Valid image",
       "raw": 0.875,
       "value": "0.88"
      },
      {
       "key": "full_page_support",
       "label": "Full-page",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 13101.2,
       "value": "13.1 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.0009,
       "value": "$0.0009 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 12.5,
       "value": "12%"
      }
     ]
    },
    {
     "verb": "extract_ai",
     "label": "Extract · AI/schema",
     "composite": 7.81,
     "rank": 3,
     "of": 4,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "field_accuracy",
       "label": "Field accuracy",
       "raw": 0.929,
       "value": "0.93"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 11453.3,
       "value": "11.5 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.004844,
       "value": "$0.0048 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 7.1,
       "value": "7%"
      }
     ]
    },
    {
     "verb": "act",
     "label": "Act · declarative",
     "composite": 7.11,
     "rank": 5,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "task_success",
       "label": "Task success",
       "raw": 0.8,
       "value": "0.80"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 23316.0,
       "value": "23.3 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.0009,
       "value": "$0.0009 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "zenrows": {
   "name": "ZenRows",
   "group": "Scraping & Crawling",
   "category": "Scraper API + CDP browser",
   "tier": "T2",
   "route": "/zenrows",
   "call": "https://api.nativeport.ai/zenrows/<native-path>",
   "docs": "https://docs.nativeport.ai/zenrows",
   "page": "https://nativeport.ai/providers/zenrows/",
   "pricing_entry": "metered by ZenRows",
   "latency_note": null,
   "provider_mcp": "official",
   "summary": "One key spans a scraper API together with a CDP scraping browser; heavy anti-bot sits behind a lone flag.",
   "choose_if": "Reach for it if a full scraping browser plus a scraper API under a single key, billed on success, fits your setup.",
   "avoid_if": "Skip it when your targets sit on its blocklist — in the corpus it produced heavy errors on *.toscrape.com.",
   "evals": [
    {
     "verb": "act",
     "label": "Act · declarative",
     "composite": 8.62,
     "rank": 2,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "task_success",
       "label": "Task success",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 6744.0,
       "value": "6.7 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.005,
       "value": "$0.005 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "scrape",
     "label": "Scrape",
     "composite": 7.35,
     "rank": 6,
     "of": 10,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "block_bypass_success_rate",
       "label": "Anti-bot bypass",
       "raw": 0.625,
       "value": "62%"
      },
      {
       "key": "markdown_cleanliness",
       "label": "Markdown clean",
       "raw": 9.4,
       "value": "9.4 / 10"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 4129.2,
       "value": "4.1 s"
      },
      {
       "key": "cost_per_successful_page_usd",
       "label": "Cost",
       "raw": 0.004704,
       "value": "$0.0047 / success"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 25.0,
       "value": "25%"
      }
     ]
    },
    {
     "verb": "extract_rules",
     "label": "Extract · CSS rules",
     "composite": 5.01,
     "rank": 3,
     "of": 3,
     "top": false,
     "measured": "2026-09-14",
     "note": "Every *.toscrape.com domain is blocklisted — an openly stated gap.",
     "metrics": [
      {
       "key": "field_accuracy",
       "label": "Field accuracy",
       "raw": 0.5,
       "value": "0.50"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 9479.8,
       "value": "9.5 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.0028,
       "value": "$0.0028 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 50.0,
       "value": "50%"
      }
     ]
    },
    {
     "verb": "screenshot",
     "label": "Screenshot",
     "composite": 2.56,
     "rank": 8,
     "of": 8,
     "top": false,
     "measured": "2026-09-14",
     "note": "books.toscrape blocks it — a gap openly noted.",
     "metrics": [
      {
       "key": "valid_image_rate",
       "label": "Valid image",
       "raw": 0.125,
       "value": "0.12"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 2172.1,
       "value": "2.2 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.0014,
       "value": "$0.0014 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 87.5,
       "value": "88%"
      }
     ]
    }
   ]
  },
  "crawlbase": {
   "name": "Crawlbase",
   "group": "Scraping & Crawling",
   "category": "Single-call + managed crawl",
   "tier": "T2",
   "route": "/crawlbase",
   "call": "https://api.nativeport.ai/crawlbase/<native-path>",
   "docs": "https://docs.nativeport.ai/crawlbase",
   "page": "https://nativeport.ai/providers/crawlbase/",
   "pricing_entry": "$0.005275 per call · js: $0.0106 per call",
   "latency_note": null,
   "provider_mcp": "community",
   "summary": "Structured scrapers and markdown output alongside a managed asynchronous crawl queue; billing follows success, scaled by domain complexity.",
   "choose_if": "The right call when a managed crawl queue with success-based billing, priced by domain complexity, is what the job needs.",
   "avoid_if": "The catch: behavior is hard to predict — separate Normal and JS tokens, plus a body field whose type varies.",
   "evals": [
    {
     "verb": "screenshot",
     "label": "Screenshot",
     "composite": 7.51,
     "rank": 6,
     "of": 8,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "valid_image_rate",
       "label": "Valid image",
       "raw": 0.75,
       "value": "0.75"
      },
      {
       "key": "full_page_support",
       "label": "Full-page",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 5190.2,
       "value": "5.2 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.01,
       "value": "$0.01 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 12.5,
       "value": "12%"
      }
     ]
    },
    {
     "verb": "scrape_domain",
     "label": "Scrape-domain",
     "composite": 6.8,
     "rank": 2,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "Instagram's anti-bot triggers non-deterministic behavior.",
     "metrics": [
      {
       "key": "value_accuracy",
       "label": "Accuracy",
       "raw": 0.763,
       "value": "0.76"
      },
      {
       "key": "field_fill",
       "label": "Field fill",
       "raw": 0.877,
       "value": "0.88"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 11692.5,
       "value": "11.7 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.006553,
       "value": "$0.0066 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "scrape",
     "label": "Scrape",
     "composite": 6.45,
     "rank": 10,
     "of": 10,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "block_bypass_success_rate",
       "label": "Anti-bot bypass",
       "raw": 0.625,
       "value": "62%"
      },
      {
       "key": "markdown_cleanliness",
       "label": "Markdown clean",
       "raw": 4.4,
       "value": "4.4 / 10"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 2161.5,
       "value": "2.2 s"
      },
      {
       "key": "cost_per_successful_page_usd",
       "label": "Cost",
       "raw": 0.012,
       "value": "$0.012 / success"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 37.5,
       "value": "38%"
      }
     ]
    }
   ]
  },
  "oxylabs": {
   "name": "Oxylabs",
   "group": "Scraping & Crawling",
   "category": "Scraping API + proxy network",
   "tier": "T2",
   "route": "/oxylabs",
   "call": "https://api.nativeport.ai/oxylabs/<native-path>",
   "docs": "https://docs.nativeport.ai/oxylabs",
   "page": "https://nativeport.ai/providers/oxylabs/",
   "pricing_entry": "$0.002638 per call (flat approximation)",
   "latency_note": null,
   "provider_mcp": "official",
   "summary": "Enterprise scraping backed by a proxy network in 195-plus countries, dedicated parsers, and success-only billing.",
   "choose_if": "Pick it for enterprise-grade scraping and parsers dedicated to Amazon and Google — its domain scrapers lead that board.",
   "avoid_if": "Not the pick if crawl enumeration scoped to a path is needed — the AI-prompt crawler cannot deliver that.",
   "evals": [
    {
     "verb": "extract_rules",
     "label": "Extract · CSS rules",
     "composite": 8.38,
     "rank": 2,
     "of": 3,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "field_accuracy",
       "label": "Field accuracy",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 12115.1,
       "value": "12.1 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.0025,
       "value": "$0.0025 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "scrape",
     "label": "Scrape",
     "composite": 6.6,
     "rank": 7,
     "of": 10,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "block_bypass_success_rate",
       "label": "Anti-bot bypass",
       "raw": 0.625,
       "value": "62%"
      },
      {
       "key": "markdown_cleanliness",
       "label": "Markdown clean",
       "raw": 3.8,
       "value": "3.8 / 10"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 7484.0,
       "value": "7.5 s"
      },
      {
       "key": "cost_per_successful_page_usd",
       "label": "Cost",
       "raw": 0.004,
       "value": "$0.004 / success"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "scrape_domain",
     "label": "Scrape-domain",
     "composite": 6.18,
     "rank": 3,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "Leading scraper, though official first-party APIs win where available.",
     "metrics": [
      {
       "key": "value_accuracy",
       "label": "Accuracy",
       "raw": 0.526,
       "value": "0.53"
      },
      {
       "key": "field_fill",
       "label": "Field fill",
       "raw": 0.842,
       "value": "0.84"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 3536.3,
       "value": "3.5 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.004753,
       "value": "$0.0048 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ],
   "unscored_in_run": [
    {
     "verb": "crawl",
     "label": "Crawl",
     "reason": "Not scored in the 2026-09-14 run.",
     "status": "unscored_in_run",
     "measured": "2026-09-14",
     "note": "Not scored in the 2026-09-14 run."
    },
    {
     "verb": "act_agent",
     "label": "Act · NL-agent",
     "reason": "Not scored in the 2026-09-14 run.",
     "status": "unscored_in_run",
     "measured": "2026-09-14",
     "note": "Not scored in the 2026-09-14 run."
    }
   ]
  },
  "brightdata": {
   "name": "Bright Data",
   "group": "Scraping & Crawling",
   "category": "Web Unlocker + Scraper API",
   "tier": "T1",
   "route": "/brightdata",
   "call": "https://api.nativeport.ai/brightdata/<native-path>",
   "docs": "https://docs.nativeport.ai/brightdata",
   "page": "https://nativeport.ai/providers/brightdata/",
   "pricing_entry": "$0.003165 per call (flat approximation)",
   "latency_note": null,
   "provider_mcp": "official",
   "summary": "Web Unlocker for anti-bot targets, pre-built structured scrapers for hundreds of domains, and a documented compliance posture.",
   "choose_if": "The right call when pre-built scrapers for well-known domains and a documented compliance posture carry the decision.",
   "avoid_if": "The catch: no crawl link-discovery — the url_collection dataset comes back with the seed URL alone.",
   "evals": [
    {
     "verb": "scrape",
     "label": "Scrape",
     "composite": 7.68,
     "rank": 4,
     "of": 10,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "block_bypass_success_rate",
       "label": "Anti-bot bypass",
       "raw": 0.75,
       "value": "75%"
      },
      {
       "key": "markdown_cleanliness",
       "label": "Markdown clean",
       "raw": 5.08,
       "value": "5.1 / 10"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 4770.3,
       "value": "4.8 s"
      },
      {
       "key": "cost_per_successful_page_usd",
       "label": "Cost",
       "raw": 0.004,
       "value": "$0.004 / success"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "scrape_domain",
     "label": "Scrape-domain",
     "composite": 5.29,
     "rank": 5,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "value_accuracy",
       "label": "Accuracy",
       "raw": 0.556,
       "value": "0.56"
      },
      {
       "key": "field_fill",
       "label": "Field fill",
       "raw": 0.583,
       "value": "0.58"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 25914.0,
       "value": "25.9 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.005396,
       "value": "$0.0054 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 41.7,
       "value": "42%"
      }
     ]
    },
    {
     "verb": "crawl",
     "label": "Crawl",
     "composite": 4.44,
     "rank": 4,
     "of": 4,
     "top": false,
     "measured": "2026-09-14",
     "note": "No link discovery: url_collection hands back just the seed.",
     "metrics": [
      {
       "key": "coverage",
       "label": "Coverage",
       "raw": 0.1,
       "value": "0.10"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 7241.4,
       "value": "7.2 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.01,
       "value": "$0.01 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "spider": {
   "name": "Spider",
   "group": "Scraping & Crawling",
   "category": "Crawl / AI-focused platform",
   "tier": "T2",
   "route": "/spider",
   "call": "https://api.nativeport.ai/spider/<native-path>",
   "docs": "https://docs.nativeport.ai/spider",
   "page": "https://nativeport.ai/providers/spider/",
   "pricing_entry": "metered by Spider",
   "latency_note": null,
   "provider_mcp": "official (22 tools)",
   "summary": "Recursive crawling at speed, markdown that comes back clean, and per-page USD costs reported inside the response.",
   "choose_if": "For teams that value crawl speed, clean markdown, and per-page pricing with no multipliers to decode.",
   "avoid_if": "Skip it when declarative actions matter — clicks no-op in live runs — or when usage-based billing must be forecastable.",
   "evals": [
    {
     "verb": "crawl",
     "label": "Crawl",
     "composite": 7.96,
     "rank": 3,
     "of": 4,
     "top": false,
     "measured": "2026-09-14",
     "note": "Quick at recursive crawling.",
     "metrics": [
      {
       "key": "coverage",
       "label": "Coverage",
       "raw": 0.681,
       "value": "0.68"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 4754.7,
       "value": "4.8 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 5.7e-05,
       "value": "$5.7e-05 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "screenshot",
     "label": "Screenshot",
     "composite": 7.64,
     "rank": 5,
     "of": 8,
     "top": false,
     "measured": "2026-09-14",
     "note": "Every capture errored; no image came back.",
     "metrics": [
      {
       "key": "valid_image_rate",
       "label": "Valid image",
       "raw": 0.75,
       "value": "0.75"
      },
      {
       "key": "full_page_support",
       "label": "Full-page",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 6138.8,
       "value": "6.1 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.001,
       "value": "$0.001 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 25.0,
       "value": "25%"
      }
     ]
    },
    {
     "verb": "scrape",
     "label": "Scrape",
     "composite": 6.54,
     "rank": 9,
     "of": 10,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "block_bypass_success_rate",
       "label": "Anti-bot bypass",
       "raw": 0.5,
       "value": "50%"
      },
      {
       "key": "markdown_cleanliness",
       "label": "Markdown clean",
       "raw": 9.62,
       "value": "9.6 / 10"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 22079.8,
       "value": "22.1 s"
      },
      {
       "key": "cost_per_successful_page_usd",
       "label": "Cost",
       "raw": 0.00013,
       "value": "$0.00013 / success"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "parse",
     "label": "Parse · PDF/doc",
     "composite": 6.37,
     "rank": 3,
     "of": 3,
     "top": false,
     "measured": "2026-09-14",
     "note": "Scanned PDFs yield raw bytes.",
     "metrics": [
      {
       "key": "text_accuracy",
       "label": "Text accuracy",
       "raw": 0.6,
       "value": "0.60"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 8188.7,
       "value": "8.2 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 3.8e-05,
       "value": "$3.8e-05 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "act",
     "label": "Act · declarative",
     "composite": 5.7,
     "rank": 6,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "Live declarative clicks do nothing.",
     "metrics": [
      {
       "key": "task_success",
       "label": "Task success",
       "raw": 0.6,
       "value": "0.60"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 41602.8,
       "value": "41.6 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.001,
       "value": "$0.001 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "zyte": {
   "name": "Zyte",
   "group": "Scraping & Crawling",
   "category": "Single-endpoint extraction",
   "tier": "T1",
   "route": "/zyte",
   "call": "https://api.nativeport.ai/zyte/<native-path>",
   "docs": "https://docs.nativeport.ai/zyte",
   "page": "https://nativeport.ai/providers/zyte/",
   "pricing_entry": "$0.00211 per call (flat approximation)",
   "latency_note": null,
   "provider_mcp": "community",
   "summary": "A single endpoint pairing automatic ban-management with AI extraction typed for product, article and job pages.",
   "choose_if": "Pick it when ban-management should be automatic and product, article or job pages need typed AI extraction.",
   "avoid_if": "Not the pick if extraction must include custom fields; the schema is fixed and won't accommodate them.",
   "evals": [
    {
     "verb": "screenshot",
     "label": "Screenshot",
     "composite": 8.92,
     "rank": 2,
     "of": 8,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "valid_image_rate",
       "label": "Valid image",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "full_page_support",
       "label": "Full-page",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 6411.6,
       "value": "6.4 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.002,
       "value": "$0.002 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "scrape",
     "label": "Scrape",
     "composite": 8.71,
     "rank": 3,
     "of": 10,
     "top": false,
     "measured": "2026-09-14",
     "note": "Cleared Cloudflare, but the DataDome target came back blocked.",
     "metrics": [
      {
       "key": "block_bypass_success_rate",
       "label": "Anti-bot bypass",
       "raw": 1.0,
       "value": "100%"
      },
      {
       "key": "markdown_cleanliness",
       "label": "Markdown clean",
       "raw": 4.25,
       "value": "4.2 / 10"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 4225.0,
       "value": "4.2 s"
      },
      {
       "key": "cost_per_successful_page_usd",
       "label": "Cost",
       "raw": 0.002,
       "value": "$0.002 / success"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "act",
     "label": "Act · declarative",
     "composite": 8.41,
     "rank": 3,
     "of": 6,
     "top": false,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "task_success",
       "label": "Task success",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 11904.7,
       "value": "11.9 s"
      },
      {
       "key": "cost_per_call_usd",
       "label": "Cost",
       "raw": 0.002,
       "value": "$0.002 / call"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    },
    {
     "verb": "extract_ai",
     "label": "Extract · AI/schema",
     "composite": 5.58,
     "rank": 4,
     "of": 4,
     "top": false,
     "measured": "2026-09-14",
     "note": "Custom fields aren't possible under its fixed schema.",
     "metrics": [
      {
       "key": "field_accuracy",
       "label": "Field accuracy",
       "raw": 0.55,
       "value": "0.55"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 6763.4,
       "value": "6.8 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.003636,
       "value": "$0.0036 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "mistral": {
   "name": "Mistral Document AI",
   "group": "Documents",
   "category": "Document OCR & structured extraction",
   "tier": null,
   "route": "/mistral",
   "call": "https://api.nativeport.ai/mistral/v1/ocr",
   "docs": "https://docs.nativeport.ai/mistral",
   "page": "https://nativeport.ai/providers/mistral/",
   "pricing_entry": "$0.00422 per page (typically 1 → $0.00422)",
   "latency_note": null,
   "provider_mcp": "none",
   "summary": "Turns a PDF or an image into page-level Markdown in one call, with the exact fields you name pulled out by JSON schema in the same pass.",
   "choose_if": "Reach for it when a document is the input and structure is the output: contracts, invoices, receipts, scanned reports — page-level Markdown with tables intact, plus a JSON object holding just the fields your schema names. Point it at an HTTPS link Mistral can reach, say which pages matter, and the cost is known before the call runs.",
   "avoid_if": "Look elsewhere when the file can't be reached over HTTPS — the document travels as a link, not an upload — or when you want a model to reason over the text and answer questions about it, which belongs on an inference route and prices per token rather than per page. Page selection is required and caps at 100 pages a request, so an unbounded archive in a single shot isn't the shape this route takes.",
   "evals": [],
   "call_method": "POST",
   "call_body": {
    "document": {
     "type": "document_url",
     "document_url": "https://example.com/contract.pdf"
    },
    "pages": [
     0
    ]
   },
   "gated": [
    {
     "verbs": [
      "parse"
     ],
     "label": "Parse · PDF/doc",
     "note": "No shared document-parsing run currently covers Mistral, so this capability has no published result."
    }
   ]
  },
  "llamaparse": {
   "name": "LlamaParse",
   "group": "Documents",
   "category": "Document parsing · async jobs",
   "tier": null,
   "route": "/llamaparse",
   "call": "https://api.nativeport.ai/llamaparse/v2/parse",
   "docs": "https://docs.nativeport.ai/llamaparse",
   "page": "https://nativeport.ai/providers/llamaparse/",
   "pricing_entry": "$0.001319 per credit (typically 5 → $0.006594)",
   "latency_note": null,
   "provider_mcp": "official (llamacloud-mcp)",
   "summary": "Parses PDFs and other documents into page text or Markdown at the fidelity you pick — a tracked async job, priced per page before it runs.",
   "choose_if": "Reach for it when documents arrive in bulk or in awkward shapes — scanned reports, slide decks, long contracts — and you want a parser tier to match the job: `fast` for plain text, `cost_effective` for Markdown with tables intact, `agentic` and `agentic_plus` when layout matters. You name the pages up front, the price is reserved before LlamaCloud is called, and the job settles to what it actually used.",
   "avoid_if": "Look elsewhere when you need the text back in the same response — a parse is a job you start and poll, so a synchronous one-shot read belongs on a scrape or OCR route — or when the document sits behind a login the parser can't reach: it travels as a URL. `page_ranges` is required, so an open-ended archive in one request isn't the shape this route takes, and `fast` jobs produce no Markdown.",
   "evals": [],
   "call_method": "POST",
   "call_body": {
    "source_url": "https://example.com/contract.pdf",
    "tier": "cost_effective",
    "version": "latest",
    "page_ranges": {
     "max_pages": 20
    }
   },
   "gated": [
    {
     "verbs": [
      "parse"
     ],
     "label": "Parse · PDF/doc",
     "note": "No shared document-parsing run currently covers LlamaParse, so this capability has no published result."
    }
   ]
  },
  "apify": {
   "name": "Apify",
   "group": "Browser Automation",
   "category": "Actor marketplace",
   "tier": "T2",
   "route": "/apify",
   "call": "https://api.nativeport.ai/apify/<native-path>",
   "docs": "https://docs.nativeport.ai/apify",
   "page": "https://nativeport.ai/providers/apify/",
   "pricing_entry": "metered by Apify",
   "latency_note": null,
   "provider_mcp": "official",
   "summary": "Scraping and automation via a 7,000+ Actor marketplace, consolidated on one key and one bill.",
   "choose_if": "Reach for it if an Actor already exists for your target site or task and building a scraper can be skipped.",
   "avoid_if": "The catch: there is no universal response schema, since every Actor defines its own item shape.",
   "evals": [
    {
     "verb": "scrape_domain",
     "label": "Scrape-domain",
     "composite": 8.02,
     "rank": 1,
     "of": 6,
     "top": true,
     "measured": "2026-09-14",
     "note": "",
     "metrics": [
      {
       "key": "value_accuracy",
       "label": "Accuracy",
       "raw": 0.967,
       "value": "0.97"
      },
      {
       "key": "field_fill",
       "label": "Field fill",
       "raw": 1.0,
       "value": "1.00"
      },
      {
       "key": "latency_p50_ms",
       "label": "Latency p50",
       "raw": 11501.4,
       "value": "11.5 s"
      },
      {
       "key": "cost_per_useful_usd",
       "label": "Cost",
       "raw": 0.010341,
       "value": "$0.01 / useful"
      },
      {
       "key": "error_rate_pct",
       "label": "Errors",
       "raw": 0.0,
       "value": "0%"
      }
     ]
    }
   ]
  },
  "browserbase": {
   "name": "Browserbase",
   "group": "Browser Automation",
   "category": "Browser-as-a-service",
   "tier": "T2",
   "route": "/browserbase",
   "call": "https://api.nativeport.ai/browserbase/<native-path>",
   "docs": "https://docs.nativeport.ai/browserbase",
   "page": "https://nativeport.ai/providers/browserbase/",
   "pricing_entry": "$0.0106 per call (flat approximation)",
   "latency_note": null,
   "provider_mcp": "official (Stagehand)",
   "summary": "Cloud headless browser sessions, driven through Playwright or Puppeteer, suited to auth-walled and multi-step flows.",
   "choose_if": "The right call when flows are stateful, multi-step or behind a login, and driving the browser yourself is the plan.",
   "avoid_if": "Not the pick for a one-shot URL-to-content call: what comes back is a session handle rather than content.",
   "evals": [],
   "gated": [
    {
     "verbs": [
      "act",
      "act_agent",
      "screenshot"
     ],
     "label": "Act / Screenshot",
     "note": "Evaluated but unscored: Browserbase hands you a CDP browser session to drive, not a synchronous goal-in/content-out REST call, so the request/response corpora can't exercise it without a stateful adapter."
    }
   ]
  },
  "browserless": {
   "name": "Browserless",
   "group": "Browser Automation",
   "category": "Stateless browser processing",
   "tier": null,
   "route": "/browserless",
   "call": "https://api.nativeport.ai/browserless/<native-path>",
   "docs": "https://docs.nativeport.ai/browserless",
   "page": "https://nativeport.ai/providers/browserless/",
   "pricing_entry": "$0.00422 per call",
   "latency_note": "≤30s bound per call",
   "provider_mcp": "none",
   "summary": "One call in, a rendered result out: screenshot, PDF, HTML, or a CSS-selector scrape from a single page load.",
   "choose_if": "Reach for it when the job is a single page — grab a screenshot, PDF, rendered HTML, or a structured CSS-selector scrape — and there's no session to keep alive.",
   "avoid_if": "Not the pick for a multi-step, stateful flow: driving a Playwright/Puppeteer session yourself, logins, or anything spanning more than one page load sits outside this route.",
   "evals": [],
   "gated": [
    {
     "verbs": [
      "screenshot",
      "extract_rules"
     ],
     "label": "Screenshot / Extract · CSS rules",
     "note": "Not yet benchmarked: the newly added Browserless fixed REST surface has not entered the current benchmark snapshot, so no score is published yet."
    }
   ]
  },
  "steel": {
   "name": "Steel",
   "group": "Browser Automation",
   "category": "Stateless browser processing",
   "tier": null,
   "route": "/steel",
   "call": "https://api.nativeport.ai/steel/<native-path>",
   "docs": "https://docs.nativeport.ai/steel",
   "page": "https://nativeport.ai/providers/steel/",
   "pricing_entry": "$0.005275 per call",
   "latency_note": null,
   "provider_mcp": "official (steel-mcp-server, drives Steel's own CDP sessions — not this route)",
   "summary": "Three fixed actions — scrape to Markdown/HTML, screenshot, or PDF — one page load in, one response out.",
   "choose_if": "Reach for it when the job is one URL and the output is page content, a screenshot, or a PDF — no session to keep alive, and no query-string configuration to get right.",
   "avoid_if": "Not the pick for a stateful flow: logins, multi-step interaction, a live session to drive, or Steel's own proxy/CAPTCHA handling all sit outside this route.",
   "evals": [],
   "gated": [
    {
     "verbs": [
      "scrape",
      "screenshot"
     ],
     "label": "Scrape / Screenshot",
     "note": "Not yet benchmarked: the newly added Steel Browser Tools surface has not entered the current benchmark snapshot, so no score is published yet."
    }
   ]
  },
  "elevenlabs": {
   "name": "ElevenLabs",
   "group": "Voice & Audio",
   "category": "Text-to-speech & voice",
   "tier": null,
   "route": "/elevenlabs",
   "call": "https://api.nativeport.ai/elevenlabs/<native-path>",
   "docs": "https://docs.nativeport.ai/elevenlabs",
   "page": "https://nativeport.ai/providers/elevenlabs/",
   "pricing_entry": "$0.000211 per credit (typically 500 → $0.1055)",
   "latency_note": null,
   "provider_mcp": "official",
   "summary": "Wildcard routing exposes the complete ElevenLabs REST surface for voice and text-to-speech.",
   "choose_if": "Pick it when voice cloning or high-quality text-to-speech should run on the key you already use.",
   "avoid_if": null,
   "evals": []
  },
  "fishaudio": {
   "name": "Fish Audio",
   "group": "Voice & Audio",
   "category": "TTS, transcription & voice design",
   "tier": null,
   "route": "/fishaudio",
   "call": "https://api.nativeport.ai/fishaudio/<native-path>",
   "docs": "https://docs.nativeport.ai/fishaudio",
   "page": "https://nativeport.ai/providers/fishaudio/",
   "pricing_entry": "tts: $0.00001582 per byte (typically 1000 → $0.0158) · asr: $0.000106 per second (typically 60 → $0.00633) · voice-design: $0.0106 per call",
   "latency_note": null,
   "provider_mcp": "community",
   "summary": "Four fixed routes reach Fish Audio's text-to-speech, transcription, and from-a-description voice-design models, each metered on the exact unit Fish Audio itself bills — bytes, audio-hours, or a flat per-call rate.",
   "choose_if": "Pick it for production text-to-speech with expressive, natural-sounding output, real speech-to-text, or building a new voice from a written description, all landing on the same key and balance as everything else here.",
   "avoid_if": "Skip it for persistent voice-clone models or account-balance visibility: Fish Audio's model-management and wallet endpoints aren't mounted, since a shared gateway key would let one customer see or reuse another's saved models and balance. Per-request zero-shot cloning still works on a single `/v1/tts` call, and Fish Audio's WebSocket streaming endpoint isn't proxied either — its chunked, timestamped HTTP streaming route covers the same low-latency case instead.",
   "evals": []
  },
  "openai": {
   "name": "OpenAI",
   "group": "Model Inference",
   "category": "Chat, embeddings & moderation API",
   "tier": null,
   "route": "/openai",
   "call": "https://api.nativeport.ai/openai/<native-path>",
   "docs": "https://docs.nativeport.ai/openai",
   "page": "https://nativeport.ai/providers/openai/",
   "pricing_entry": "per token, see /inference/v1/models",
   "latency_note": null,
   "provider_mcp": "none",
   "summary": "OpenAI's Responses, Chat Completions, embeddings and moderation endpoints, metered per token against the same balance as the rest of the catalog, with gpt-5.6's cache- and context-tiered Standard rates read straight from each response.",
   "choose_if": "Pick it when the task calls for an OpenAI model by name and per-token spend should land on the one ledger you already watch.",
   "avoid_if": "Skip it for anything outside the gateway's admitted surface: only a fixed, maintained model list and a closed set of request fields are reachable, and everything else is rejected before it reaches OpenAI.",
   "evals": []
  },
  "anthropic": {
   "name": "Anthropic",
   "group": "Model Inference",
   "category": "Claude Messages API",
   "tier": null,
   "route": "/anthropic",
   "call": "https://api.nativeport.ai/anthropic/<native-path>",
   "docs": "https://docs.nativeport.ai/anthropic",
   "page": "https://nativeport.ai/providers/anthropic/",
   "pricing_entry": "per token, see /inference/v1/models",
   "latency_note": null,
   "provider_mcp": "none",
   "summary": "Claude's Messages API behind the same policed-route pattern as the OpenAI proxy, cache-tier pricing included.",
   "choose_if": "Pick it for Claude's models specifically, with prompt-cache pricing tiers read straight from each response and billed to the one balance.",
   "avoid_if": "Skip it for anything outside the gateway's admitted surface: only a fixed, current Claude model list and a closed set of request fields are admitted here.",
   "evals": []
  },
  "grok": {
   "name": "Grok",
   "group": "Model Inference",
   "category": "xAI's Grok chat & Responses API",
   "tier": null,
   "route": "/grok",
   "call": "https://api.nativeport.ai/grok/<native-path>",
   "docs": "https://docs.nativeport.ai/grok",
   "page": "https://nativeport.ai/providers/grok/",
   "pricing_entry": "per token, see /inference/v1/models",
   "latency_note": null,
   "provider_mcp": "none",
   "summary": "xAI's Grok chat and Responses API, billed from the dollar cost each response reports rather than a maintained price table.",
   "choose_if": "Pick it for Grok's models specifically, where the real per-call cost rides in the response itself instead of a separately kept price list.",
   "avoid_if": "Skip it for anything outside the gateway's admitted surface: only a fixed model list and a closed set of request fields are reachable, same as the other model-inference routes here.",
   "evals": []
  },
  "huggingface": {
   "name": "Hugging Face",
   "group": "Model Inference",
   "category": "Multi-provider chat inference router",
   "tier": null,
   "route": "/huggingface",
   "call": "https://api.nativeport.ai/huggingface/<native-path>",
   "docs": "https://docs.nativeport.ai/huggingface",
   "page": "https://nativeport.ai/providers/huggingface/",
   "pricing_entry": "per token, see /inference/v1/models",
   "latency_note": null,
   "provider_mcp": "none",
   "summary": "Hugging Face's Inference Providers router, fanned out across competing serving providers behind one chat-completions endpoint.",
   "choose_if": "Pick it to reach open models served by whichever backing provider is cataloged for them, without separate accounts or price lists per provider.",
   "avoid_if": "The leanest of the model-inference routes: no files, batches or fine-tuning surface, and no access to the router's own fastest/cheapest/preferred routing — chat completions only, pinned to specific cataloged (model, provider) pairs.",
   "evals": []
  },
  "typesafe": {
   "name": "TypeSafe Jev",
   "group": "Model Inference",
   "category": "Typed decisions with calibrated probabilities",
   "tier": null,
   "route": "/typesafe",
   "call": "https://api.nativeport.ai/typesafe/v1/systemone",
   "docs": "https://docs.nativeport.ai/typesafe",
   "page": "https://nativeport.ai/providers/typesafe/",
   "pricing_entry": "$0.00000004 per token (typically 300 → $0.0000136)",
   "latency_note": null,
   "provider_mcp": "none",
   "summary": "Answers typed questions about content you supply — yes/no, pick-one, rate-against-levels — with a probability on every option instead of a paragraph to parse.",
   "choose_if": "Reach for it when your code needs a decision it can branch on, not prose it has to read: which queue a ticket belongs in, whether a retrieved passage actually answers the question, how severe a policy breach looks, whether a message is a jailbreak attempt. Every answer carries the probability of each option and its own confidence, so you can act on the clear ones and send the rest to a person. The content is read once however many questions ride along, which makes a batch of twenty far cheaper than twenty calls.",
   "avoid_if": "Look elsewhere when you want the model to write something — there is no generated text, no streaming, no tool use and no conversation, so a summary or a reply belongs on an inference route instead. It reads text only: images, audio and PDFs have to be turned into text or fields first. And the whole request caps at 64k tokens, with 32k for the content plus the longest single question, so a full archive in one shot is the wrong shape.",
   "evals": [],
   "call_method": "POST",
   "call_body": {
    "state": "Help! My payouts have been failing for 3 days.",
    "model": "jev-latest",
    "questions": {
     "is_urgent": {
      "type": "noul",
      "instructions": "Does this convey urgency?"
     }
    }
   }
  }
 },
 "run": {
  "name": "2026-09-14",
  "measured": "2026-09-14",
  "scored_providers": 22,
  "catalog_providers": 34,
  "scorecards": 67,
  "capabilities": 13,
  "unscored_in_catalog": [
   {
    "slug": "brave",
    "name": "Brave Search",
    "capability": "Answer",
    "reason": "Not scored in the 2026-09-14 run.",
    "note": "Not scored in the 2026-09-14 run.",
    "status": "unscored_in_run",
    "measured": "2026-09-14",
    "pair_id": "brave:answer",
    "capability_id": "brave",
    "track": "answer",
    "scope": "catalog"
   },
   {
    "slug": "oxylabs",
    "name": "Oxylabs",
    "capability": "Crawl",
    "reason": "Not scored in the 2026-09-14 run.",
    "note": "Not scored in the 2026-09-14 run.",
    "status": "unscored_in_run",
    "measured": "2026-09-14",
    "pair_id": "oxylabs:crawl",
    "capability_id": "oxylabs",
    "track": "crawl",
    "scope": "catalog"
   },
   {
    "slug": "oxylabs",
    "name": "Oxylabs",
    "capability": "Act · NL-agent",
    "reason": "Not scored in the 2026-09-14 run.",
    "note": "Not scored in the 2026-09-14 run.",
    "status": "unscored_in_run",
    "measured": "2026-09-14",
    "pair_id": "oxylabs:act_agent",
    "capability_id": "oxylabs",
    "track": "act_agent",
    "scope": "catalog"
   }
  ],
  "unscored_outside_catalog": 2,
  "unscored_pairs": [
   {
    "pair_id": "brave:answer",
    "capability_id": "brave",
    "track": "answer",
    "capability": "Answer",
    "scope": "catalog",
    "status": "unscored_in_run",
    "measured": "2026-09-14",
    "reason": "Not scored in the 2026-09-14 run.",
    "note": "Not scored in the 2026-09-14 run.",
    "slug": "brave",
    "name": "Brave Search"
   },
   {
    "pair_id": "oxylabs:crawl",
    "capability_id": "oxylabs",
    "track": "crawl",
    "capability": "Crawl",
    "scope": "catalog",
    "status": "unscored_in_run",
    "measured": "2026-09-14",
    "reason": "Not scored in the 2026-09-14 run.",
    "note": "Not scored in the 2026-09-14 run.",
    "slug": "oxylabs",
    "name": "Oxylabs"
   },
   {
    "pair_id": "oxylabs:act_agent",
    "capability_id": "oxylabs",
    "track": "act_agent",
    "capability": "Act · NL-agent",
    "scope": "catalog",
    "status": "unscored_in_run",
    "measured": "2026-09-14",
    "reason": "Not scored in the 2026-09-14 run.",
    "note": "Not scored in the 2026-09-14 run.",
    "slug": "oxylabs",
    "name": "Oxylabs"
   },
   {
    "pair_id": "youtube-data-api:scrape_domain",
    "capability_id": "youtube-data-api",
    "track": "scrape_domain",
    "capability": "Scrape-domain",
    "scope": "source_only",
    "status": "unscored_in_run",
    "measured": "2026-09-14",
    "reason": "Not scored in the 2026-09-14 run.",
    "note": "Not scored in the 2026-09-14 run."
   },
   {
    "pair_id": "google-books-api:scrape_domain",
    "capability_id": "google-books-api",
    "track": "scrape_domain",
    "capability": "Scrape-domain",
    "scope": "source_only",
    "status": "unscored_in_run",
    "measured": "2026-09-14",
    "reason": "Not scored in the 2026-09-14 run.",
    "note": "Not scored in the 2026-09-14 run."
   }
  ]
 }
}
