Skip to content
Back to QuanticData Data API

Card snapshot

quanticdata.io · 2026-10-09 18:23:35 UTC · 5c1fc19c0fbd9dd23180202eaebe467a4c546deceb6039fba653ad0147db003a

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "name": "QuanticData Data API",
  "description": "QuanticData Data API as an A2A agent: scrape any URL, search the web (SERP), map and crawl sites, run ready-made collectors and build datasets \u2014 through a residential, ISP and mobile proxy network. Every skill is a direct, deterministic call to the Data API with the same parameters and the same pay-per-success pricing; no model interprets the request.",
  "supportedInterfaces": [
    {
      "url": "https://api.quanticdata.io/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "QuanticData",
    "url": "https://quanticdata.io"
  },
  "version": "1.0.0",
  "documentationUrl": "https://quanticdata.io/docs/",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": true
  },
  "securitySchemes": {
    "apiKey": {
      "httpAuthSecurityScheme": {
        "scheme": "bearer",
        "bearerFormat": "QuanticData API key (qd_live_\u2026 from https://app.quanticdata.io/api-keys)",
        "description": "Authorization: Bearer qd_live_<64 hex>. The same key, rate limits and pay-per-success billing as the REST Data API: an A2A call costs what the underlying endpoint costs."
      }
    },
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://app.quanticdata.io/oauth/authorize",
            "tokenUrl": "https://app.quanticdata.io/api/v1/oauth/token",
            "refreshUrl": "https://app.quanticdata.io/api/v1/oauth/token",
            "scopes": {
              "mcp": "Call the hosted MCP server on behalf of the account"
            },
            "pkceRequired": true
          }
        },
        "oauth2MetadataUrl": "https://app.quanticdata.io/.well-known/oauth-authorization-server",
        "description": "OAuth 2.1 authorization server of the account (RFC 8414 metadata above, dynamic client registration, PKCE). Its access tokens are accepted today by the MCP endpoint (https://api.quanticdata.io/mcp) only \u2014 the A2A endpoint requires the API key scheme. Listed for discovery; not a requirement of this agent."
      }
    }
  },
  "securityRequirements": [
    {
      "schemes": {
        "apiKey": {
          "list": []
        }
      }
    }
  ],
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "scrape_url",
      "name": "Scrape a URL",
      "description": "Fetch one page through the proxy network and return it as markdown, html or text, optionally with a structured extraction schema (CSS selectors), a screenshot or browser actions. Same parameters as POST /v1/scrape (url, format, engine, render, country, extract, actions, screenshot \u2026). Completes in the same call.",
      "tags": [
        "scrape",
        "extract",
        "markdown",
        "proxy",
        "web"
      ],
      "examples": [
        "{\"skill\":\"scrape_url\",\"input\":{\"url\":\"https://example.com/pricing\",\"format\":\"markdown\",\"country\":\"us\"}}",
        "{\"skill\":\"scrape_url\",\"input\":{\"url\":\"https://example.com/pricing\",\"extract\":{\"title\":\"h1\",\"price\":\".price\"}}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "web_search",
      "name": "Web search (SERP)",
      "description": "Structured search results from Google, Bing or DuckDuckGo: organic results, shopping, images, news, places, maps, jobs, autocomplete and the other verticals. Same parameters as POST /v1/serp (query, engine, search_type, country, lang, num, page, device, location \u2026). Completes in the same call.",
      "tags": [
        "search",
        "serp",
        "google",
        "bing",
        "duckduckgo"
      ],
      "examples": [
        "{\"skill\":\"web_search\",\"input\":{\"query\":\"best espresso machines 2026\",\"country\":\"us\",\"num\":10}}",
        "{\"skill\":\"web_search\",\"input\":{\"query\":\"pizzeria napoli\",\"search_type\":\"places\",\"country\":\"it\",\"lang\":\"it\"}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "map_site",
      "name": "Map a site",
      "description": "Discover the URLs of a site from its sitemaps and homepage links, with per-section counts. Same parameters as POST /v1/map (url, limit, search, includeSubdomains, sitemapOnly, group_by, country). Completes in the same call.",
      "tags": [
        "map",
        "sitemap",
        "urls",
        "discovery"
      ],
      "examples": [
        "{\"skill\":\"map_site\",\"input\":{\"url\":\"https://example.com\",\"limit\":100,\"search\":\"blog\"}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "crawl_site",
      "name": "Crawl a site",
      "description": "Crawl up to 500 pages from a seed URL and return each page as markdown, html or text. Same parameters as POST /v1/crawl (url, limit, depth, format, contentMode, render, include, exclude, country). Asynchronous: the task stays TASK_STATE_WORKING while the job runs; poll it with GetTask, the crawled pages arrive as an artifact when it is TASK_STATE_COMPLETED. CancelTask stops the job.",
      "tags": [
        "crawl",
        "spider",
        "markdown",
        "async"
      ],
      "examples": [
        "{\"skill\":\"crawl_site\",\"input\":{\"url\":\"https://docs.example.com\",\"limit\":50,\"depth\":3,\"include\":[\"/guides/*\"]}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "run_collector",
      "name": "Run a collector",
      "description": "Run one of the ready-made collectors (Amazon, Google Maps, app stores, job boards, \u2026) with its semantic input and get typed rows back. Input: {\"slug\": \"<collector slug>\", ...collector input} \u2014 same body as POST /v1/scraper/collectors/{slug}/run; the catalog with each collector's input_schema is GET /v1/scraper/collectors. Short runs complete in the same call; long runs return a TASK_STATE_WORKING task to poll with GetTask. Collector runs cannot be canceled.",
      "tags": [
        "collector",
        "dataset",
        "rows",
        "e-commerce",
        "maps",
        "jobs"
      ],
      "examples": [
        "{\"skill\":\"run_collector\",\"input\":{\"slug\":\"amazon_search\",\"keyword\":\"espresso machine\",\"country\":\"us\",\"max_results\":20}}",
        "{\"skill\":\"run_collector\",\"input\":{\"slug\":\"google_maps_places\",\"query\":\"dentist\",\"location\":\"Milan, Italy\",\"async\":true}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "build_dataset",
      "name": "Build a dataset",
      "description": "Build a dataset from a natural-language prompt: the pipeline searches, maps and scrapes the sources and returns validated rows with the requested columns. Same parameters as POST /v1/scraper/datasets (prompt, columns, country, sources, limits, webhook, refresh, refreshUrls). Asynchronous: poll the task with GetTask; the rows and download links arrive as an artifact at TASK_STATE_COMPLETED. CancelTask stops the job.",
      "tags": [
        "dataset",
        "pipeline",
        "rows",
        "async"
      ],
      "examples": [
        "{\"skill\":\"build_dataset\",\"input\":{\"prompt\":\"Italian B2B SaaS companies with pricing pages\",\"columns\":[\"name\",\"website\",\"pricing_url\"],\"country\":\"it\",\"limits\":{\"max_rows\":100}}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    }
  ]
}