Crevio Data API
Included business data: search the tool catalog, then run a tool (website/SEO, people, companies, local businesses, social, e-commerce, finance, jobs, reviews, ads, real estate, news, apps, travel, weather, legal).
Included business data: search the tool catalog, then run a tool (website/SEO, people, companies, local businesses, social, e-commerce, finance, jobs, reviews, ads, real estate, news, apps, travel, weather, legal).
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/crevio-co:crevio-co-data-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Crevio API V1 Data API
version: 1.0.0
description: 'API for the Crevio creator platform — a multi-tenant SaaS for digital product sales.
Uses snake_case keys following Stripe conventions. All resource IDs are string IDs (e.g., "prod_abc123").
Authentication is a bearer token: `Authorization: Bearer $CREVIO_API_KEY`.
List endpoints are cursor-paginated with `limit` and `starting_after`.
Writes accept an `Idempotency-Key` header and are safe to retry.
Every response carries IETF RateLimit headers (`RateLimit`, `RateLimit-Policy`) so a client can
self-throttle, and `Retry-After` on a 429. The quota is 600 requests per minute per credential.
The API is versioned in the URL path (`/v1`). Nothing is removed without in-band warning: a
deprecated operation is marked `"deprecated": true` here and serves `Deprecation` (RFC 9745),
`Sunset` (RFC 8594) and `Link; rel="deprecation"` headers for at least six months before it
stops answering. See https://crevio.co/docs/developer/guides/versioning.'
contact:
email: support@crevio.co
name: Crevio Support
url: https://crevio.co/docs
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
termsOfService: https://crevio.co/legal/terms-of-service
servers:
- url: https://api.crevio.co/v1
description: Production
security:
- ApiKey: []
tags:
- name: Data
description: 'Included business data: search the tool catalog, then run a tool (website/SEO, people, companies, local businesses, social, e-commerce, finance, jobs, reviews, ads, real estate, news, apps, travel, weather, legal).'
paths:
/data/tools:
get:
summary: Search data tools
description: 'Searches Crevio''s included business data: 70+ read-only tools over website/SEO and AI search visibility, people, companies, local businesses (Google Maps), social media, e-commerce (Amazon, Google Shopping), markets, SEC filings and crypto, jobs, reviews, ad libraries, US real estate, news, app stores, hotels, weather and US law. Pass a short noun phrase (e.g. "tiktok comments", "zillow listings", "backlinks") and read each tool''s `input_schema` and `price`, then run one with createDataRun. Free.'
operationId: listDataTools
x-crevio-sdk-group: data.tools
x-crevio-sdk-method: list
tags:
- Data
security:
- ApiKey: []
parameters:
- name: query
in: query
description: What you need, as a short phrase, e.g. "instagram profile".
schema:
type: string
- name: domain
in: query
description: Only tools in this domain.
schema:
type: string
enum:
- website
- people
- company
- smb
- social
- ecommerce
- finance
- jobs
- reviews
- ads
- real_estate
- news
- apps
- travel
- weather
- legal
- name: platform
in: query
description: Only tools covering this platform, e.g. tiktok, amazon, zillow, trustpilot.
schema:
type: string
- name: limit
in: query
description: Max tools to return (1-50).
schema:
type: integer
minimum: 1
maximum: 50
default: 10
responses:
'200':
description: Matching tools, best match first.
content:
application/json:
schema:
type: object
properties:
object:
type: string
enum:
- list
data:
type: array
items:
$ref: '#/components/schemas/DataTool'
has_more:
type: boolean
url:
type: string
required:
- object
- data
- has_more
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
x-crevio-approval: allow
x-codeSamples:
- lang: typescript
label: Typescript (SDK)
source: "import { Crevio } from \"@crevio/sdk\";\n\nconst crevio = new Crevio({\n apiKey: process.env[\"CREVIO_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n const result = await crevio.data.tools.list({});\n\n console.log(result);\n}\n\nrun();"
/data/tools/{id}:
get:
summary: Get a data tool
description: One data tool with its full input schema and estimated price. Free.
operationId: getDataTool
x-crevio-sdk-group: data.tools
x-crevio-sdk-method: get
tags:
- Data
security:
- ApiKey: []
parameters:
- name: id
in: path
required: true
description: Tool id, e.g. social.profile.
schema:
type: string
responses:
'200':
description: The tool.
content:
application/json:
schema:
$ref: '#/components/schemas/DataTool'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/NotFound'
x-crevio-approval: allow
x-codeSamples:
- lang: typescript
label: Typescript (SDK)
source: "import { Crevio } from \"@crevio/sdk\";\n\nconst crevio = new Crevio({\n apiKey: process.env[\"CREVIO_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n const result = await crevio.data.tools.get({\n id: \"<id>\",\n });\n\n console.log(result);\n}\n\nrun();"
/data/runs:
post:
summary: Run a data tool
description: 'Runs one data tool (find it with listDataTools) with `input` matching its `input_schema`, and returns the source''s data. Billed from what the source charged, usually 1-5 credits; a failed run is free. Tools marked `queued` wait on the source''s queue: if one is not done within about 25 seconds the run comes back `running` (HTTP 202), so poll getDataRun until it is `succeeded` or `failed`.'
operationId: createDataRun
x-crevio-sdk-group: data.runs
x-crevio-sdk-method: create
x-crevio-read-only: true
tags:
- Data
security:
- ApiKey: []
parameters:
- name: Idempotency-Key
in: header
required: false
description: 'Makes this write safe to retry: a repeat with the same key replays the first response instead of creating a second resource. Scoped to the account, remembered for 24 hours; reusing a key with a different payload is an error.'
schema:
type: string
maxLength: 255
example: 1f7a4c2e-3b19-4a6d-9f0c-2ac81b5d7e33
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
tool_id:
type: string
description: Tool id from listDataTools, e.g. smb.search.
input:
type: object
additionalProperties: true
description: The tool's input, per its input_schema.
required:
- tool_id
responses:
'200':
description: Finished run (succeeded or failed).
content:
application/json:
schema:
$ref: '#/components/schemas/DataRun'
'202':
description: Still running on the source's queue; poll getDataRun.
content:
application/json:
schema:
$ref: '#/components/schemas/DataRun'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'402':
description: Insufficient credits
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'502':
$ref: '#/components/responses/BadGateway'
x-crevio-approval: allow
x-codeSamples:
- lang: typescript
label: Typescript (SDK)
source: "import { Crevio } from \"@crevio/sdk\";\n\nconst crevio = new Crevio({\n apiKey: process.env[\"CREVIO_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n const result = await crevio.data.runs.create({\n toolId: \"<id>\",\n });\n\n console.log(result);\n}\n\nrun();"
/data/runs/{id}:
get:
summary: Get a data run
description: 'A data run by id: poll a `running` run until it is `succeeded` or `failed`.'
operationId: getDataRun
x-crevio-sdk-group: data.runs
x-crevio-sdk-method: get
tags:
- Data
security:
- ApiKey: []
parameters:
- name: id
in: path
required: true
description: Run id (job_…).
schema:
type: string
responses:
'200':
description: The run.
content:
application/json:
schema:
$ref: '#/components/schemas/DataRun'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/NotFound'
x-crevio-approval: allow
x-codeSamples:
- lang: typescript
label: Typescript (SDK)
source: "import { Crevio } from \"@crevio/sdk\";\n\nconst crevio = new Crevio({\n apiKey: process.env[\"CREVIO_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n const result = await crevio.data.runs.get({\n id: \"<id>\",\n });\n\n console.log(result);\n}\n\nrun();"
components:
responses:
TooManyRequests:
description: 'Rate limit exceeded — 600 requests per minute per owner on the free tier: every API key and OAuth token one person holds on an account shares one budget, and the account''s team keys share another. Retry after the number of seconds in `Retry-After`.'
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
RateLimit:
$ref: '#/components/headers/RateLimit'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
type: invalid_request_error
code: rate_limit_exceeded
message: Too many requests. Please retry later.
Conflict:
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
Request-Id:
$ref: '#/components/headers/RequestId'
Deprecation:
$ref: '#/components/headers/Deprecation'
Sunset:
$ref: '#/components/headers/Sunset'
Link:
$ref: '#/components/headers/DeprecationLink'
BadGateway:
description: Upstream (provider) failure
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
Request-Id:
$ref: '#/components/headers/RequestId'
Deprecation:
$ref: '#/components/headers/Deprecation'
Sunset:
$ref: '#/components/headers/Sunset'
Link:
$ref: '#/components/headers/DeprecationLink'
BadRequest:
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
type: invalid_request_error
code: bad_request
message: The request was malformed or contained invalid parameters
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
Request-Id:
$ref: '#/components/headers/RequestId'
Deprecation:
$ref: '#/components/headers/Deprecation'
Sunset:
$ref: '#/components/headers/Sunset'
Link:
$ref: '#/components/headers/DeprecationLink'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
type: invalid_request_error
code: resource_missing
message: The requested resource was not found
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
Request-Id:
$ref: '#/components/headers/RequestId'
Deprecation:
$ref: '#/components/headers/Deprecation'
Sunset:
$ref: '#/components/headers/Sunset'
Link:
$ref: '#/components/headers/DeprecationLink'
UnprocessableEntity:
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
type: validation_error
code: validation_failed
message: Email is required
errors:
email:
- can't be blank
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
Request-Id:
$ref: '#/components/headers/RequestId'
Deprecation:
$ref: '#/components/headers/Deprecation'
Sunset:
$ref: '#/components/headers/Sunset'
Link:
$ref: '#/components/headers/DeprecationLink'
Unauthorized:
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
type: invalid_request_error
code: authentication_required
message: You did not provide an API key.
headers:
RateLimit:
$ref: '#/components/headers/RateLimit'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
Request-Id:
$ref: '#/components/headers/RequestId'
Deprecation:
$ref: '#/components/headers/Deprecation'
Sunset:
$ref: '#/components/headers/Sunset'
Link:
$ref: '#/components/headers/DeprecationLink'
headers:
RetryAfter:
description: Seconds to wait before retrying.
schema:
type: integer
examples:
- 11
Sunset:
description: Present only on a deprecated operation. HTTP-date (RFC 8594) after which the operation stops responding. Always at least six months after `Deprecation`.
schema:
type: string
examples:
- Thu, 01 Oct 2026 00:00:00 GMT
RateLimit:
description: 'Remaining quota for the current window, as an IETF structured field: `"default";r=<remaining>;t=<seconds until reset>`.'
schema:
type: string
examples:
- '"default";r=596;t=11'
RateLimitPolicy:
description: 'The quota this credential is subject to: `"default";q=<requests>;w=<window seconds>`.'
schema:
type: string
examples:
- '"default";q=600;w=60'
RequestId:
description: Unique id for this request. Quote it when reporting a problem.
schema:
type: string
examples:
- 8fe045fe-cb8a-4407-a44d-5df60385e522
DeprecationLink:
description: Present only on a deprecated operation. `<url>; rel="deprecation"` pointing at the migration notes.
schema:
type: string
examples:
- <https://crevio.co/docs/developer/guides/versioning>; rel="deprecation"
Deprecation:
description: Present only on a deprecated operation. Structured-field date (RFC 9745) — `@` followed by the Unix timestamp at which the operation became deprecated.
schema:
type: string
examples:
- '@1775001600'
schemas:
DataTool:
type: object
properties:
object:
type: string
id:
type: string
name:
type: string
description:
type: string
domains:
type: array
items:
type: string
platforms:
type: array
items:
type: string
queued:
type: boolean
price:
type: object
input_schema:
type: object
required:
- object
- id
- name
- description
- domains
- platforms
- queued
- price
- input_schema
Error:
type: object
properties:
error:
type: object
properties:
type:
type: string
enum:
- api_error
- invalid_request_error
- validation_error
code:
type: string
message:
type: string
param:
type: string
errors:
type: object
doc_url:
type: string
required:
- type
- message
required:
- error
DataRun:
type: object
properties:
object:
type: string
id:
type: string
tool_id:
type: string
status:
type: string
data:
type:
- object
- 'null'
source:
type:
- string
- 'null'
error:
type:
- object
- 'null'
credits_used:
type: integer
input:
type: object
created_at:
type: string
completed_at:
type:
- string
- 'null'
required:
- object
- id
- tool_id
- status
- data
- source
- error
- credits_used
- input
- created_at
- completed_at
securitySchemes:
ApiKey:
type: apiKey
in: header
name: Authorization
description: 'API key in the format: Bearer {api_token}'
externalDocs:
description: Crevio developer documentation
url: https://crevio.co/docs/developer
x-mint:
mcp:
enabled: true
x-api-lifecycle:
current_major_version: v1
versioning_scheme: URL path
deprecation_policy_url: https://crevio.co/docs/developer/guides/versioning
minimum_notice_days: 183
deprecation_headers:
- Deprecation
- Sunset
- Link