QannasAPI

The Engine Room

← qannasapi.com

One key. The whole catalog. A receipt on every response.

QannasAPI is the unified public-web-data API underneath the done-for-you jobs on our front page. One POST, one bearer token, one JSON envelope — people, companies, contacts, websites, SERP, ads, maps, and the Gulf's classifieds. Estimate any call for free, pay only on results, and read the exact charge off the response headers.

Free one-time credits · qk_test_ keys never bill · a miss returns data: null and charges 0

Not a developer? The jobs on our front page run these same endpoints — no code needed.

Overview

What you get behind one key

The plumbing a data team would otherwise build and maintain — already behind the same bearer token.

One key, one bill, one schema

Every action returns the same envelope: { status, request_id, data }. The code you write for your first call keeps working for your ten-thousandth.

Success-only billing

A call that returns no result is HTTP 200 with data: null and X-Credits-Charged: 0. Upstream failures are never billed and are safe to retry.

Free estimates on everything

POST /v1/data/{action}:estimate quotes the credit cost and charges nothing. Workflows also accept dry_run: true.

Server-side workflows

Six chained jobs run on our side with per-step success-only billing — one call instead of five, and you pay only for steps that produced data.

Quickstart

First call in three steps

No proxies to rotate, no headless browsers to babysit, no parsers to repair.

  1. 1. Mint a keyCreate a workspace, confirm your email, then mint a qk_live_ or qk_test_ key. Every request carries Authorization: Bearer.
  2. 2. Estimate for freePOST /v1/data/{action}:estimate returns the credit cost of the call you are about to make and charges zero.
  3. 3. Call itSame envelope every time. Read X-Credits-Charged and X-Credits-Balance off the response headers to know exactly what it cost.
estimate-then-call.sh
# 1 — what will this cost? (free)
curl -X POST https://api.qannasapi.com/v1/data/contacts/find-email:estimate \
  -H "Authorization: Bearer $QANNAS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "Jane Doe, Acme Logistics"}'

# 2 — run it. Same envelope, every time.
curl -X POST https://api.qannasapi.com/v1/data/contacts/find-email \
  -H "Authorization: Bearer $QANNAS_API_KEY" \
  -d '{"query": "Jane Doe, Acme Logistics"}'

# < 200 OK
# < X-Credits-Charged: 5
# < X-Credits-Balance: 95
# {"status":"OK","request_id":"...","data":{...}}

qk_test_ keys cost zero credits and are workspace quota-bound. Chains touching a paid source return deterministic fixtures; fully first-party chains may return live data.

MCP & agents

A hosted MCP server, scoped read-only

The same catalog, exposed to AI agents over Streamable HTTP JSON-RPC 2.0 — including the six workflows, each with a free dry_run quote.

Endpoint

POSThttps://api.qannasapi.com/mcp

Streamable HTTP · JSON-RPC 2.0 · 34 tools · 13 read-only scopes

34 scoped tools

28 data and usage tools plus the 6 workflow tools. Call tools/list to discover the current set for your token rather than trusting a copied list.

Read-only by construction

All 13 scopes are reads. There is no write scope to withhold — a token can look things up and can never change, send, or delete anything.

Deny-by-default tokens

qm_ tokens are shown once, stored as a SHA-256 digest, minted by workspace owners and admins, and revoked instantly (the next request fails).

In-band cost reporting

Every tool result carries _credits_charged and _credits_balance, so an agent can tell the user what a call cost without a second request.

Authentication: read this before you plan an integration

The MCP endpoint currently takes a static bearer token — there is no OAuth yet, though it is on the roadmap. In practice that means any client with a custom-header field connects today, while hosted connector directories that require an OAuth sign-in flow cannot yet. We do not name a client as supported until it has passed our own staging smoke test.

Known gaps — deliberately listed

  • Delta cursors (since_cursor / track_delta) are REST-only and are not passed through the MCP tools.
  • Consensus-verified contacts, classifieds listings and hiring signals are REST-only. Agent workflows reach them through a recipe, not a tool call.
  • MCP calls always spend real credits — there is no test-key sandbox on the qm_ token path.

Any MCP client whose settings accept a URL plus a custom header will connect: header name Authorization, value Bearer followed by your token. Copy-paste configurations for individual clients are published as each one passes our smoke test.

SDKs & tooling

Generate a client, or just read the spec

The OpenAPI 3.1 document is the contract; everything else is generated from it.

OpenAPI 3.1

The full public specification, hosted on this site and safe to point a generator at.

Interactive reference

Every endpoint, schema and example, browsable — with the request bodies you will actually send.

Postman collections

The API collection plus recipe collections, generated from the same spec so they cannot drift.

Automation adapters

Nodes and connectors for the common automation platforms are built; marketplace listings are in progress.

Pricing & metering

You can audit every charge from the response

Credits, public per-action prices, and three headers that tell you exactly where you stand.

Headers on every data call

X-Credits-Charged, X-Credits-Balance and X-Price-Book. No end-of-month reconciliation, no guessing.

Per-result pricing on searches

Searches charge per contact found, not per attempt. A bigger search costs more because it returns more.

Free evaluation

A one-time credit grant on signup, plus qk_test_ keys that never bill and are workspace quota-bound.

Volume and enterprise

Custom price books, higher rate-limit tiers and provisioned spend caps for teams running at scale.

Public price book

Per-action credit prices

Standard public per-action rates. Per-result actions charge per result returned; everything else charges per call. Billing is success-only: no result, no charge. The portal shows the exact price resolved for your workspace, which may differ under custom pricing.

Contacts & enrichment

  • Email findfind_email5 cr
  • Email verifyverify_email1 cr
  • Phone findfind_phone10 cr
  • Person enrichenrich_person3 cr
  • Company enrichenrich_company3 cr
  • Reverse lookupreverse_lookup1 cr
  • People searchsearch_people1 cr / result
  • Company searchsearch_companies1 cr / result
  • Lead searchsearch_leads1 cr / result
  • Company employees searchsearch_company_employees1 cr / result
  • Lookalike searchsearch_lookalikes1 cr
  • Competitor followerscompetitor_followers1 cr / result

Classifieds / MENA listings

  • Classifieds listing searchlistings_search2 cr
  • Listing detailslisting_details2 cr
  • Agent listingsagent_listings2 cr
  • Listing phone reveallisting_phone15 cr

SERP & SEO

  • SERP (Google results)serp1 cr
  • Keywordskeywords1 cr
  • Backlinksbacklinks1 cr
  • Trendstrends1 cr
  • Ads searchads_search1 cr
  • Ads detailsads_details1 cr

Maps & local

  • Maps placesmaps_places1 cr
  • Maps reviewsmaps_reviews1 cr

Website intelligence

  • Website intelligencewebsite_intelligence1 cr
  • Tech stackwebsite_tech_stack1 cr
  • Website contactswebsite_contacts1 cr
  • Social linkswebsite_social_links1 cr
  • Domain resolvewebsite_resolve1 cr
  • Tracking pixelswebsite_pixels1 cr
  • Page scrapewebsite_scrape1 cr
  • Sitemapwebsite_sitemap1 cr
  • Meta tagswebsite_meta_tags1 cr
  • JSON-LDwebsite_json_ld1 cr
  • Traffic snapshotwebsite_traffic1 cr

Social, posts & signals

  • Posts searchposts_search1 cr
  • Posts & activitiesposts_activities1 cr
  • Funding roundsfunding1 cr
  • Signal: funding eventssignals_funding_events1 cr
  • Signal: headcount growthsignals_headcount_growth1 cr
  • Signal: job changessignals_job_changes1 cr

YouTube

  • YouTube searchyoutube_search1 cr
  • YouTube videoyoutube_video1 cr
  • YouTube channelyoutube_channel1 cr
  • Channel videosyoutube_channel_videos1 cr

Jobs & AI

  • Job searchsearch_jobs1 cr
  • AI enrichai_enrich1 cr
  • AI personalityai_personality1 cr

Live catalog: GET /v1/meta/actions · Per-call cost estimates: POST /v1/data/{action}:estimate · Real performance per action: GET /v1/meta/hit-rates

Reliability

Judge us on our numbers

Published find-rates

GET /v1/public/hit-rates returns anonymized, cohort-protected statistics on how often we actually return data. No key required.

Estimates cost nothing

Quote any action or workflow before you run it, as often as you like, for zero credits.

Honest failures

An unrouted chain returns 501 not_implemented rather than a plausible empty result — and upstream errors are never charged.

Start with a free estimate.

Mint a key, quote a call, and see the whole contract for yourself before you spend a credit.