A unified marketplace for scraping/data APIs. Reach hundreds of third-party data APIs through one key; pay per request in USD; schemas normalized across providers with automatic failover. AI agents pay inline per call with no account via x402 (Base mainnet, USDC). 218 paid endpoints under POST /v1/run/{sku}.
Pay from $0.001 to $0.035 per request in USDC on Base, settled onchain via the x402 protocol, no signup, no API key needed.
first settlement 2026-06-23 · $5.42 all-time · settled via coinbase
ASSESSMENT
updated 6h agoEvidence-backed signals, not a single score. Click any chip for the proof. Measured values stay read-only; unknown is honest.
reliability 17.8%
- uptime 24h
- 0%
- uptime 7d
- 0%
- uptime 30d
- 17.8%
- uptime 90d
- 51.4%
- response p95
- 680ms
- avg response
- 311ms
- total checks
- 2,204
Measured on the unpaid 402 handshake, not the paid call. A service can 402 correctly and still fail after payment.
compliance A (13/13), stale (probe failing)
13 of 13 x402 conformance checks pass. Full checklist below.
price $0.001 to $0.035 (p9 in Data)
- price (min)
- $0.001
- price (max)
- $0.035
- category percentile (min)
- p9 in Data
- category percentile (max)
- p53 in Data
- endpoints / prices
- 3 / 3
- model
- tiered
- stability
- 100%
risk clean
No deterministic risk flag. Risk fires only on an exact blocklist match, or a reserved-brand name with a mismatched verified payTo. Never from low uptime, a high price, or a model guess.
- domain age
- -
- registrar
- -
- hosting
- custom
- domain created
- ---
Identity facts, not a risk score.
traction $4.82366 30d · 21 buyers
- volume 30d
- $4.82366
- buyers 30d
- 21
- settlements 30d
- 457
- first settlement
- 2026-06-23
- last settlement
- 2026-08-10
- top buyer share
- 50% of 30d volume
- trend 7d vs 30d
- 2.21x the 30d daily rate
- networks
- eip155:8453
- volume all-time
- $5.42
- settlements all-time
- 627
- median settlement 30d
- $0.002
- max settlement 30d
- $0.1756
- settled via
- coinbase
Conservative undercount: only USDC settlements via facilitators we measure are counted. A measured floor, not an estimate.
Top buyer share is a concentration signal, not part of the ranking score.
WHAT IT DOES
ai-derivedProvides API services for scraping Amazon products, Reddit posts, and general web content
- category
- web-scraping
- in
- body
AI-generated summary. The measured data is never altered by it.
ENDPOINTS
| METHOD | PATH | DESCRIPTION | PRICE | NETWORK | ASSET | 402 CHANNEL |
|---|---|---|---|---|---|---|
| POST | /v1/run/amazon.asins | AnyAPI amazon.asins (Amazon Products by ASIN) | $0.035 | Base | USDC | - |
| POST | /v1/run/reddit.subreddit_posts | AnyAPI reddit.subreddit_posts (Reddit Subreddit Posts) | $0.002 | Base | USDC | - |
| POST | /v1/run/web.scrape | AnyAPI web.scrape (Web Scrape) | $0.001 | Base | USDC | - |
REQUEST / RESPONSE EXAMPLE
An unpaid request to POST /v1/run/amazon.asins returns HTTP 402 with the payment terms. Settle onchain via your facilitator, then retry with the X-Payment header.
curl -i -X POST 'https://api.getanyapi.com/v1/run/amazon.asins'
// 402 response (captured by monitor) · 3 payloads · click to expand
[
{
"error": "payment required: pay via x402 (PAYMENT-SIGNATURE/X-PAYMENT) or MPP (Authorization: Payment)",
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13",
"amount": "1000",
"scheme": "exact",
"network": "eip155:8453",
"mimeType": "application/json",
"resource": "https://api.getanyapi.com/v1/run/web.scrape",
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"url": "https://example.com",
"formats": [
"markdown",
"html",
"rawHtml"
],
"onlyMainContent": true
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json"
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"properties": {
"body": {
"type": "object",
"title": "Web scrape input",
"example": {
"url": "https://example.com",
"formats": [
"markdown",
"html",
"rawHtml"
],
"onlyMainContent": true
},
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "The URL of the page to scrape."
},
"mobile": {
"type": "boolean",
"description": "When true, render the page with a mobile viewport and user agent instead of desktop. Some sites serve materially different content to mobile."
},
"formats": {
"type": "array",
"items": {
"enum": [
"markdown",
"html",
"rawHtml"
],
"type": "string"
},
"default": [
"markdown"
],
"description": "Which representations of the page to return. Any combination of: markdown (clean main content), html (cleaned HTML), rawHtml (verbatim page HTML). Each requested format is returned under the matching output field. Defaults to markdown only."
},
"waitFor": {
"type": "integer",
"maximum": 15000,
"minimum": 0,
"description": "Milliseconds to wait for the page to finish rendering before capture. Use this for JavaScript-heavy pages or single-page apps whose content loads after the initial paint. Capped at 15000 to stay within the request timeout."
},
"blockAds": {
"type": "boolean",
"description": "When true (upstream default), strip ad and cookie-consent elements before capture. Set false to keep them."
},
"excludeTags": {
"type": "array",
"items": {
"type": "string"
},
"description": "CSS selectors to drop before capture (for example [\"nav\", \"footer\", \".ads\"]). Applied after includeTags."
},
"includeTags": {
"type": "array",
"items": {
"type": "string"
},
"description": "CSS selectors to keep. When set, only content matching these selectors is captured (for example [\"article\", \"main\"] or [\"#content\"])."
},
"onlyMainContent": {
"type": "boolean",
"default": true,
"description": "When true (default) return only the main article content, stripping navigation, headers, footers, and other boilerplate. Set false to capture the full page."
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"properties": {
"example": {
"type": "object",
"required": [
"output",
"provider",
"costUsd"
],
"properties": {
"items": {
"type": "integer",
"description": "Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count."
},
"output": {
"type": "object",
"title": "Web scrape output",
"required": [
"found",
"data"
],
"properties": {
"data": {
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"url",
"title",
"description",
"markdown"
],
"properties": {
"url": {
"type": "string",
"description": "The canonical source URL of the scraped page. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"html": {
"type": "string",
"description": "The cleaned page HTML. Present only when 'html' is among the requested formats."
},
"title": {
"type": "string",
"description": "The page title from its metadata."
},
"rawHtml": {
"type": "string",
"description": "The verbatim page HTML before cleaning. Present only when 'rawHtml' is among the requested formats."
},
"markdown": {
"type": "string",
"description": "The page content as clean Markdown. Present when 'markdown' is among the requested formats (the default). Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"description": {
"type": "string",
"description": "The page meta description."
}
}
}
]
},
"found": {
"type": "boolean"
}
},
"x-anyapi-heavy": true,
"additionalProperties": false
},
"costUsd": {
"type": "number",
"description": "Amount charged in USD for this call."
},
"jqError": {
"type": "string",
"description": "Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply."
},
"provider": {
"type": "string",
"description": "Always \"AnyAPI\"."
},
"resultId": {
"type": "string",
"description": "Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache."
}
}
}
}
}
}
}
}
},
"description": "AnyAPI web.scrape (Web Scrape)",
"outputSchema": {
"input": {
"type": "http",
"method": "POST",
"bodyType": "json",
"bodyFields": {
"url": {
"type": "string",
"format": "uri",
"description": "The URL of the page to scrape."
},
"mobile": {
"type": "boolean",
"description": "When true, render the page with a mobile viewport and user agent instead of desktop. Some sites serve materially different content to mobile."
},
"formats": {
"type": "array",
"items": {
"enum": [
"markdown",
"html",
"rawHtml"
],
"type": "string"
},
"default": [
"markdown"
],
"description": "Which representations of the page to return. Any combination of: markdown (clean main content), html (cleaned HTML), rawHtml (verbatim page HTML). Each requested format is returned under the matching output field. Defaults to markdown only."
},
"waitFor": {
"type": "integer",
"maximum": 15000,
"minimum": 0,
"description": "Milliseconds to wait for the page to finish rendering before capture. Use this for JavaScript-heavy pages or single-page apps whose content loads after the initial paint. Capped at 15000 to stay within the request timeout."
},
"blockAds": {
"type": "boolean",
"description": "When true (upstream default), strip ad and cookie-consent elements before capture. Set false to keep them."
},
"excludeTags": {
"type": "array",
"items": {
"type": "string"
},
"description": "CSS selectors to drop before capture (for example [\"nav\", \"footer\", \".ads\"]). Applied after includeTags."
},
"includeTags": {
"type": "array",
"items": {
"type": "string"
},
"description": "CSS selectors to keep. When set, only content matching these selectors is captured (for example [\"article\", \"main\"] or [\"#content\"])."
},
"onlyMainContent": {
"type": "boolean",
"default": true,
"description": "When true (default) return only the main article content, stripping navigation, headers, footers, and other boilerplate. Set false to capture the full page."
}
},
"discoverable": true
},
"output": {
"type": "object",
"required": [
"output",
"provider",
"costUsd"
],
"properties": {
"items": {
"type": "integer",
"description": "Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count."
},
"output": {
"type": "object",
"title": "Web scrape output",
"required": [
"found",
"data"
],
"properties": {
"data": {
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"url",
"title",
"description",
"markdown"
],
"properties": {
"url": {
"type": "string",
"description": "The canonical source URL of the scraped page. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"html": {
"type": "string",
"description": "The cleaned page HTML. Present only when 'html' is among the requested formats."
},
"title": {
"type": "string",
"description": "The page title from its metadata."
},
"rawHtml": {
"type": "string",
"description": "The verbatim page HTML before cleaning. Present only when 'rawHtml' is among the requested formats."
},
"markdown": {
"type": "string",
"description": "The page content as clean Markdown. Present when 'markdown' is among the requested formats (the default). Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"description": {
"type": "string",
"description": "The page meta description."
}
}
}
]
},
"found": {
"type": "boolean"
}
},
"x-anyapi-heavy": true,
"additionalProperties": false
},
"costUsd": {
"type": "number",
"description": "Amount charged in USD for this call."
},
"jqError": {
"type": "string",
"description": "Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply."
},
"provider": {
"type": "string",
"description": "Always \"AnyAPI\"."
},
"resultId": {
"type": "string",
"description": "Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache."
}
}
}
},
"maxTimeoutSeconds": 60
}
],
"resource": {
"url": "https://api.getanyapi.com/v1/run/web.scrape",
"mimeType": "application/json",
"description": "AnyAPI web.scrape (Web Scrape)"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"url": "https://example.com",
"formats": [
"markdown",
"html",
"rawHtml"
],
"onlyMainContent": true
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json"
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"properties": {
"body": {
"type": "object",
"title": "Web scrape input",
"example": {
"url": "https://example.com",
"formats": [
"markdown",
"html",
"rawHtml"
],
"onlyMainContent": true
},
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "The URL of the page to scrape."
},
"mobile": {
"type": "boolean",
"description": "When true, render the page with a mobile viewport and user agent instead of desktop. Some sites serve materially different content to mobile."
},
"formats": {
"type": "array",
"items": {
"enum": [
"markdown",
"html",
"rawHtml"
],
"type": "string"
},
"default": [
"markdown"
],
"description": "Which representations of the page to return. Any combination of: markdown (clean main content), html (cleaned HTML), rawHtml (verbatim page HTML). Each requested format is returned under the matching output field. Defaults to markdown only."
},
"waitFor": {
"type": "integer",
"maximum": 15000,
"minimum": 0,
"description": "Milliseconds to wait for the page to finish rendering before capture. Use this for JavaScript-heavy pages or single-page apps whose content loads after the initial paint. Capped at 15000 to stay within the request timeout."
},
"blockAds": {
"type": "boolean",
"description": "When true (upstream default), strip ad and cookie-consent elements before capture. Set false to keep them."
},
"excludeTags": {
"type": "array",
"items": {
"type": "string"
},
"description": "CSS selectors to drop before capture (for example [\"nav\", \"footer\", \".ads\"]). Applied after includeTags."
},
"includeTags": {
"type": "array",
"items": {
"type": "string"
},
"description": "CSS selectors to keep. When set, only content matching these selectors is captured (for example [\"article\", \"main\"] or [\"#content\"])."
},
"onlyMainContent": {
"type": "boolean",
"default": true,
"description": "When true (default) return only the main article content, stripping navigation, headers, footers, and other boilerplate. Set false to capture the full page."
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"properties": {
"example": {
"type": "object",
"required": [
"output",
"provider",
"costUsd"
],
"properties": {
"items": {
"type": "integer",
"description": "Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count."
},
"output": {
"type": "object",
"title": "Web scrape output",
"required": [
"found",
"data"
],
"properties": {
"data": {
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"url",
"title",
"description",
"markdown"
],
"properties": {
"url": {
"type": "string",
"description": "The canonical source URL of the scraped page. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"html": {
"type": "string",
"description": "The cleaned page HTML. Present only when 'html' is among the requested formats."
},
"title": {
"type": "string",
"description": "The page title from its metadata."
},
"rawHtml": {
"type": "string",
"description": "The verbatim page HTML before cleaning. Present only when 'rawHtml' is among the requested formats."
},
"markdown": {
"type": "string",
"description": "The page content as clean Markdown. Present when 'markdown' is among the requested formats (the default). Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"description": {
"type": "string",
"description": "The page meta description."
}
}
}
]
},
"found": {
"type": "boolean"
}
},
"x-anyapi-heavy": true,
"additionalProperties": false
},
"costUsd": {
"type": "number",
"description": "Amount charged in USD for this call."
},
"jqError": {
"type": "string",
"description": "Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply."
},
"provider": {
"type": "string",
"description": "Always \"AnyAPI\"."
},
"resultId": {
"type": "string",
"description": "Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache."
}
}
}
}
}
}
}
}
},
"x402Version": 2
},
{
"error": "payment required: pay via x402 (PAYMENT-SIGNATURE/X-PAYMENT) or MPP (Authorization: Payment)",
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13",
"amount": "2000",
"scheme": "exact",
"network": "eip155:8453",
"mimeType": "application/json",
"resource": "https://api.getanyapi.com/v1/run/reddit.subreddit_posts",
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"limit": 5,
"subreddit": "programming"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json"
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"properties": {
"body": {
"type": "object",
"title": "Reddit subreddit posts input",
"example": {
"limit": 5,
"subreddit": "programming"
},
"required": [
"subreddit"
],
"properties": {
"sort": {
"enum": [
"hot",
"new",
"top"
],
"type": "string",
"default": "hot",
"description": "Listing sort order."
},
"after": {
"type": "string",
"description": "Pagination cursor from a previous response (its `nextCursor`). Fetches the page that follows; omit for the first page."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Requested number of posts. Note: the upstream returns one page (about 25 posts) per call; values larger than a page are not delivered in a single response. To fetch more, page with the `after` cursor returned as `nextCursor`."
},
"subreddit": {
"type": "string",
"description": "Subreddit name without the leading r/ (e.g. \"golang\")."
},
"timeframe": {
"enum": [
"all",
"year",
"month",
"week",
"day",
"hour"
],
"type": "string",
"description": "Time window, applied when sort is \"top\" (e.g. \"year\" for the year's top posts). Ignored for hot/new. Omit to default to the current day for top."
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"properties": {
"example": {
"type": "object",
"required": [
"output",
"provider",
"costUsd"
],
"properties": {
"items": {
"type": "integer",
"description": "Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count."
},
"output": {
"type": "object",
"title": "Reddit subreddit posts output",
"required": [
"found",
"data"
],
"properties": {
"data": {
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"posts",
"nextCursor"
],
"properties": {
"posts": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"author",
"score",
"numComments",
"url",
"permalink",
"createdUtc",
"subreddit"
],
"properties": {
"id": {
"type": "string",
"description": "Reddit post ID (base-36, without the t3_ prefix). Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"url": {
"type": "string",
"description": "The post's destination link (the external URL for link posts, or the thread URL for self posts). Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"score": {
"type": "integer",
"description": "Net score (upvotes minus downvotes) at fetch time."
},
"title": {
"type": "string",
"description": "Post title. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"author": {
"type": "string",
"description": "Author username, without the u/ prefix. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"permalink": {
"type": "string",
"description": "Canonical reddit.com thread path for the post (e.g. \"/r/golang/comments/abc123/...\"). Differs from url, which is the destination link. Empty if the upstream omits it. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"subreddit": {
"type": "string",
"description": "Subreddit name, without the r/ prefix. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"createdUtc": {
"type": "number",
"description": "UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"numComments": {
"type": "integer",
"description": "Total number of comments on the post."
}
}
},
"description": "Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"nextCursor": {
"type": "string",
"description": "Cursor for the next page of results; pass it back as the `after` input to fetch the following page. Empty string when there are no more results."
}
},
"additionalProperties": false
}
]
},
"found": {
"type": "boolean"
}
},
"additionalProperties": false
},
"costUsd": {
"type": "number",
"description": "Amount charged in USD for this call."
},
"jqError": {
"type": "string",
"description": "Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply."
},
"provider": {
"type": "string",
"description": "Always \"AnyAPI\"."
},
"resultId": {
"type": "string",
"description": "Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache."
}
}
}
}
}
}
}
}
},
"description": "AnyAPI reddit.subreddit_posts (Reddit Subreddit Posts)",
"outputSchema": {
"input": {
"type": "http",
"method": "POST",
"bodyType": "json",
"bodyFields": {
"sort": {
"enum": [
"hot",
"new",
"top"
],
"type": "string",
"default": "hot",
"description": "Listing sort order."
},
"after": {
"type": "string",
"description": "Pagination cursor from a previous response (its `nextCursor`). Fetches the page that follows; omit for the first page."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Requested number of posts. Note: the upstream returns one page (about 25 posts) per call; values larger than a page are not delivered in a single response. To fetch more, page with the `after` cursor returned as `nextCursor`."
},
"subreddit": {
"type": "string",
"description": "Subreddit name without the leading r/ (e.g. \"golang\")."
},
"timeframe": {
"enum": [
"all",
"year",
"month",
"week",
"day",
"hour"
],
"type": "string",
"description": "Time window, applied when sort is \"top\" (e.g. \"year\" for the year's top posts). Ignored for hot/new. Omit to default to the current day for top."
}
},
"discoverable": true
},
"output": {
"type": "object",
"required": [
"output",
"provider",
"costUsd"
],
"properties": {
"items": {
"type": "integer",
"description": "Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count."
},
"output": {
"type": "object",
"title": "Reddit subreddit posts output",
"required": [
"found",
"data"
],
"properties": {
"data": {
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"posts",
"nextCursor"
],
"properties": {
"posts": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"author",
"score",
"numComments",
"url",
"permalink",
"createdUtc",
"subreddit"
],
"properties": {
"id": {
"type": "string",
"description": "Reddit post ID (base-36, without the t3_ prefix). Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"url": {
"type": "string",
"description": "The post's destination link (the external URL for link posts, or the thread URL for self posts). Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"score": {
"type": "integer",
"description": "Net score (upvotes minus downvotes) at fetch time."
},
"title": {
"type": "string",
"description": "Post title. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"author": {
"type": "string",
"description": "Author username, without the u/ prefix. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"permalink": {
"type": "string",
"description": "Canonical reddit.com thread path for the post (e.g. \"/r/golang/comments/abc123/...\"). Differs from url, which is the destination link. Empty if the upstream omits it. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"subreddit": {
"type": "string",
"description": "Subreddit name, without the r/ prefix. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"createdUtc": {
"type": "number",
"description": "UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"numComments": {
"type": "integer",
"description": "Total number of comments on the post."
}
}
},
"description": "Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"nextCursor": {
"type": "string",
"description": "Cursor for the next page of results; pass it back as the `after` input to fetch the following page. Empty string when there are no more results."
}
},
"additionalProperties": false
}
]
},
"found": {
"type": "boolean"
}
},
"additionalProperties": false
},
"costUsd": {
"type": "number",
"description": "Amount charged in USD for this call."
},
"jqError": {
"type": "string",
"description": "Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply."
},
"provider": {
"type": "string",
"description": "Always \"AnyAPI\"."
},
"resultId": {
"type": "string",
"description": "Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache."
}
}
}
},
"maxTimeoutSeconds": 60
}
],
"resource": {
"url": "https://api.getanyapi.com/v1/run/reddit.subreddit_posts",
"mimeType": "application/json",
"description": "AnyAPI reddit.subreddit_posts (Reddit Subreddit Posts)"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"limit": 5,
"subreddit": "programming"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json"
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"properties": {
"body": {
"type": "object",
"title": "Reddit subreddit posts input",
"example": {
"limit": 5,
"subreddit": "programming"
},
"required": [
"subreddit"
],
"properties": {
"sort": {
"enum": [
"hot",
"new",
"top"
],
"type": "string",
"default": "hot",
"description": "Listing sort order."
},
"after": {
"type": "string",
"description": "Pagination cursor from a previous response (its `nextCursor`). Fetches the page that follows; omit for the first page."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Requested number of posts. Note: the upstream returns one page (about 25 posts) per call; values larger than a page are not delivered in a single response. To fetch more, page with the `after` cursor returned as `nextCursor`."
},
"subreddit": {
"type": "string",
"description": "Subreddit name without the leading r/ (e.g. \"golang\")."
},
"timeframe": {
"enum": [
"all",
"year",
"month",
"week",
"day",
"hour"
],
"type": "string",
"description": "Time window, applied when sort is \"top\" (e.g. \"year\" for the year's top posts). Ignored for hot/new. Omit to default to the current day for top."
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"properties": {
"example": {
"type": "object",
"required": [
"output",
"provider",
"costUsd"
],
"properties": {
"items": {
"type": "integer",
"description": "Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count."
},
"output": {
"type": "object",
"title": "Reddit subreddit posts output",
"required": [
"found",
"data"
],
"properties": {
"data": {
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"posts",
"nextCursor"
],
"properties": {
"posts": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"author",
"score",
"numComments",
"url",
"permalink",
"createdUtc",
"subreddit"
],
"properties": {
"id": {
"type": "string",
"description": "Reddit post ID (base-36, without the t3_ prefix). Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"url": {
"type": "string",
"description": "The post's destination link (the external URL for link posts, or the thread URL for self posts). Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"score": {
"type": "integer",
"description": "Net score (upvotes minus downvotes) at fetch time."
},
"title": {
"type": "string",
"description": "Post title. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"author": {
"type": "string",
"description": "Author username, without the u/ prefix. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"permalink": {
"type": "string",
"description": "Canonical reddit.com thread path for the post (e.g. \"/r/golang/comments/abc123/...\"). Differs from url, which is the destination link. Empty if the upstream omits it. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"subreddit": {
"type": "string",
"description": "Subreddit name, without the r/ prefix. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"createdUtc": {
"type": "number",
"description": "UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"numComments": {
"type": "integer",
"description": "Total number of comments on the post."
}
}
},
"description": "Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"nextCursor": {
"type": "string",
"description": "Cursor for the next page of results; pass it back as the `after` input to fetch the following page. Empty string when there are no more results."
}
},
"additionalProperties": false
}
]
},
"found": {
"type": "boolean"
}
},
"additionalProperties": false
},
"costUsd": {
"type": "number",
"description": "Amount charged in USD for this call."
},
"jqError": {
"type": "string",
"description": "Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply."
},
"provider": {
"type": "string",
"description": "Always \"AnyAPI\"."
},
"resultId": {
"type": "string",
"description": "Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache."
}
}
}
}
}
}
}
}
},
"x402Version": 2
},
{
"error": "payment required: pay via x402 (PAYMENT-SIGNATURE/X-PAYMENT) or MPP (Authorization: Payment)",
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13",
"amount": "35000",
"scheme": "exact",
"network": "eip155:8453",
"mimeType": "application/json",
"resource": "https://api.getanyapi.com/v1/run/amazon.asins",
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"asins": [
"B09G9FPHY6"
],
"limit": 3
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json"
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"properties": {
"body": {
"type": "object",
"title": "Amazon products by ASIN input",
"example": {
"asins": [
"B09G9FPHY6"
],
"limit": 3
},
"required": [
"asins"
],
"properties": {
"asins": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Up to 10 Amazon ASINs to look up (e.g. [\"B0CHX1W1XY\", \"B09G9FPHY6\"])."
},
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Maximum number of results to return (1–10, default 10). You are billed per result returned, so a lower limit costs less."
},
"amazonDomain": {
"type": "string",
"default": "amazon.com",
"description": "Amazon marketplace domain to fetch products from (e.g. amazon.com, amazon.de, amazon.co.uk)."
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"properties": {
"example": {
"type": "object",
"required": [
"output",
"provider",
"costUsd"
],
"properties": {
"items": {
"type": "integer",
"description": "Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count."
},
"output": {
"type": "object",
"title": "Amazon products by ASIN output",
"required": [
"found",
"data"
],
"properties": {
"data": {
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"asin",
"title",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"asin": {
"type": "string",
"description": "Amazon Standard Identification Number. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"brand": {
"type": "string",
"description": "Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"image": {
"type": "string",
"description": "Primary product image URL. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"price": {
"type": "number",
"description": "Buy-box price; 0 when no offer is available."
},
"title": {
"type": "string",
"description": "Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"rating": {
"type": "number",
"description": "Average star rating, 0-5."
},
"inStock": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"condition": {
"type": "string"
},
"sellerName": {
"type": "string"
},
"reviewsCount": {
"type": "integer"
}
}
},
"description": "Product records: ASIN, title, brand, price, ratings, images, and attributes. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
}
},
"additionalProperties": false
}
]
},
"found": {
"type": "boolean"
}
},
"additionalProperties": false
},
"costUsd": {
"type": "number",
"description": "Amount charged in USD for this call."
},
"jqError": {
"type": "string",
"description": "Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply."
},
"provider": {
"type": "string",
"description": "Always \"AnyAPI\"."
},
"resultId": {
"type": "string",
"description": "Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache."
}
}
}
}
}
}
}
}
},
"description": "AnyAPI amazon.asins (Amazon Products by ASIN)",
"outputSchema": {
"input": {
"type": "http",
"method": "POST",
"bodyType": "json",
"bodyFields": {
"asins": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Up to 10 Amazon ASINs to look up (e.g. [\"B0CHX1W1XY\", \"B09G9FPHY6\"])."
},
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Maximum number of results to return (1–10, default 10). You are billed per result returned, so a lower limit costs less."
},
"amazonDomain": {
"type": "string",
"default": "amazon.com",
"description": "Amazon marketplace domain to fetch products from (e.g. amazon.com, amazon.de, amazon.co.uk)."
}
},
"discoverable": true
},
"output": {
"type": "object",
"required": [
"output",
"provider",
"costUsd"
],
"properties": {
"items": {
"type": "integer",
"description": "Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count."
},
"output": {
"type": "object",
"title": "Amazon products by ASIN output",
"required": [
"found",
"data"
],
"properties": {
"data": {
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"asin",
"title",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"asin": {
"type": "string",
"description": "Amazon Standard Identification Number. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"brand": {
"type": "string",
"description": "Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"image": {
"type": "string",
"description": "Primary product image URL. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"price": {
"type": "number",
"description": "Buy-box price; 0 when no offer is available."
},
"title": {
"type": "string",
"description": "Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"rating": {
"type": "number",
"description": "Average star rating, 0-5."
},
"inStock": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"condition": {
"type": "string"
},
"sellerName": {
"type": "string"
},
"reviewsCount": {
"type": "integer"
}
}
},
"description": "Product records: ASIN, title, brand, price, ratings, images, and attributes. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
}
},
"additionalProperties": false
}
]
},
"found": {
"type": "boolean"
}
},
"additionalProperties": false
},
"costUsd": {
"type": "number",
"description": "Amount charged in USD for this call."
},
"jqError": {
"type": "string",
"description": "Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply."
},
"provider": {
"type": "string",
"description": "Always \"AnyAPI\"."
},
"resultId": {
"type": "string",
"description": "Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache."
}
}
}
},
"maxTimeoutSeconds": 60
}
],
"resource": {
"url": "https://api.getanyapi.com/v1/run/amazon.asins",
"mimeType": "application/json",
"description": "AnyAPI amazon.asins (Amazon Products by ASIN)"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"asins": [
"B09G9FPHY6"
],
"limit": 3
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json"
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"properties": {
"body": {
"type": "object",
"title": "Amazon products by ASIN input",
"example": {
"asins": [
"B09G9FPHY6"
],
"limit": 3
},
"required": [
"asins"
],
"properties": {
"asins": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Up to 10 Amazon ASINs to look up (e.g. [\"B0CHX1W1XY\", \"B09G9FPHY6\"])."
},
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Maximum number of results to return (1–10, default 10). You are billed per result returned, so a lower limit costs less."
},
"amazonDomain": {
"type": "string",
"default": "amazon.com",
"description": "Amazon marketplace domain to fetch products from (e.g. amazon.com, amazon.de, amazon.co.uk)."
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"properties": {
"example": {
"type": "object",
"required": [
"output",
"provider",
"costUsd"
],
"properties": {
"items": {
"type": "integer",
"description": "Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count."
},
"output": {
"type": "object",
"title": "Amazon products by ASIN output",
"required": [
"found",
"data"
],
"properties": {
"data": {
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"asin",
"title",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"asin": {
"type": "string",
"description": "Amazon Standard Identification Number. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"brand": {
"type": "string",
"description": "Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"image": {
"type": "string",
"description": "Primary product image URL. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"price": {
"type": "number",
"description": "Buy-box price; 0 when no offer is available."
},
"title": {
"type": "string",
"description": "Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
},
"rating": {
"type": "number",
"description": "Average star rating, 0-5."
},
"inStock": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"condition": {
"type": "string"
},
"sellerName": {
"type": "string"
},
"reviewsCount": {
"type": "integer"
}
}
},
"description": "Product records: ASIN, title, brand, price, ratings, images, and attributes. Populated whenever the provider has data for the entity.",
"x-anyapi-must-populate": true
}
},
"additionalProperties": false
}
]
},
"found": {
"type": "boolean"
}
},
"additionalProperties": false
},
"costUsd": {
"type": "number",
"description": "Amount charged in USD for this call."
},
"jqError": {
"type": "string",
"description": "Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply."
},
"provider": {
"type": "string",
"description": "Always \"AnyAPI\"."
},
"resultId": {
"type": "string",
"description": "Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache."
}
}
}
}
}
}
}
}
},
"x402Version": 2
}
] OVER TIME
All charts use the 30d selector; each series spans only the dates it has data for. Every series is also served as JSON at /api/v1/services/anyapi/price, /scores, /volume and /buyers. On-chain volume and distinct buyers are measured over the service's settlement address and are a conservative undercount (only settlements that reach a measured facilitator are counted). The on-chain series roll up hourly, so the latest day can be up to about an hour behind; distinct buyers are counted per payout address, so a service that settles to more than one address is an upper bound.
Median across 3 endpoints. Use the selector to isolate one.
checklist grew 11->14 on 2026-07-28; a step here is a metric change, not a regression
Measured site and economics pillars from the assessment history, so the latest value shown elsewhere on this page reads as a point on a trend rather than a permanent state.
COMPLIANCE
13/13 checks pass · grade A · stale (probe failing)last 402 captured 2026-07-13 · last up 2026-07-16
- 402 payload captured
- accepts[] array present
- payTo address recoverable
- payTo at accepts[0].payTo (conformant shape)
- payTo is a valid on-chain address
- atomic price declared
- atomic price in a sane range
- asset (token) address declared
- network resolves to CAIP-2
- payment scheme declared
- served over HTTPS
- declares the current x402 version (2)
- EIP-712 domain parameters present on every EVM entry
- x402 v2 envelope delivered in the payment-required header
SITE PILLARS
- homepage reachable
- openapi doc
- pricing page
- llms.txt
- robots.txt
- terms page
recent checks (18) live · click to expand
EMBED THIS BADGE
<a href="https://x402-list.com/services/anyapi?utm_source=badge&utm_medium=referral&utm_campaign=embed"> <img src="https://x402-list.com/badge/anyapi.svg" alt="AnyAPI listed on x402-list" height="28"> </a>
[](https://x402-list.com/services/anyapi?utm_source=badge&utm_medium=referral&utm_campaign=embed)
<a href="https://x402-list.com/services/anyapi?utm_source=badge&utm_medium=referral&utm_campaign=embed"> <img src="https://x402-list.com/badge/anyapi.svg?data=uptime" alt="AnyAPI uptime on x402-list" height="28"> </a>