Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: FastAF Amazon API
version: v1
contact:
email: support@fastaf.co
url: https://fastaf.co/docs/#x402
description: 'FastAF is a web data API for AI agents: Google SERP, Maps, ecommerce, web scraping, AI extraction, screenshots, news, jobs, research, public profiles and video transcripts. Use prepaid API keys or account-free x402 v2 payments.'
x-guidance: 'Use GET /x402/v1/{endpoint} with query parameters (not POST or a JSON body). Choose serp for Google search, maps for places, news/shopping/scholar/jobs for specialized search, ai for Google AI Mode, amazon/youtube for their resource variants, linkedin/x for public profiles, walmart/zillow/ebay for structured commerce or listings, scrape for public HTML or markdown, and screenshot for images. Use the dedicated zillow and ebay endpoints instead of scrape for those sites. The q and lang aliases are accepted for query (search_query on YouTube) and language. Send a valid unpaid request first; read the x402 v2 PAYMENT-REQUIRED header, sign with an x402 client such as @x402/fetch, and retry the identical URL with PAYMENT-SIGNATURE. USDC payment uses the network and amount in that live challenge; no API-key authentication is needed. Only successful results are settled; inspect PAYMENT-RESPONSE for the receipt. Prices here are decimal USD, while the challenge uses USDC atomic units (six decimals). Dynamic prices depend on advance_search (serp), resource (amazon/youtube), or rendering, proxies/country and AI extraction (scrape). Scrape site defaults, including Booking rendering and Reddit feed mode, are applied before quoting. A bare unsigned URL returns a default-variant discovery quote only: add valid parameters and request a new challenge before paying. Unpaid HEAD probes also return PAYMENT-REQUIRED with no body; use GET, not HEAD, to pay for data. Invalid parameterized requests and blocked targets return 400; payment headers never bypass validation. Never reuse a settled signature for a new call. Respect Retry-After on rate/capacity errors. For the separate prepaid-key API and authenticated credit-pack top-up, see /v1/openapi.json. Get a free API key at https://fastaf.co/signup/ with an email address, terms acceptance and browser verification. No card is required. POST /public/signup sends an email confirmation link and sets a dashboard session cookie; it does not return an API key. Follow the emailed GET /public/signin/{token} link, then create a key in the dashboard (POST /v1/keys with the session cookie). The key is shown only once. Email confirmation unlocks 2 free calls per account in total, not per day, shared across all keys and all offered REST/MCP endpoints, valid for 12 months; failed calls restore their slot. Unverified trial accounts receive email_verification_required (403) before any data call or trial reservation. Signups are limited per IPv4 /24 or IPv6 /64 network per UTC day (default 3); 429 means retry after the reset. GET /v1/usage reports free_requests_remaining separately from balance_credits. POST /v1/signup is retired and always returns 410 signup_disabled. Agents without an inbox can use /x402/v1/{endpoint} without an account.'
x-signup-guidance: Get a free API key at https://fastaf.co/signup/ with an email address, terms acceptance and browser verification. No card is required. POST /public/signup sends an email confirmation link and sets a dashboard session cookie; it does not return an API key. Follow the emailed GET /public/signin/{token} link, then create a key in the dashboard (POST /v1/keys with the session cookie). The key is shown only once. Email confirmation unlocks 2 free calls per account in total, not per day, shared across all keys and all offered REST/MCP endpoints, valid for 12 months; failed calls restore their slot. Unverified trial accounts receive email_verification_required (403) before any data call or trial reservation. Signups are limited per IPv4 /24 or IPv6 /64 network per UTC day (default 3); 429 means retry after the reset. GET /v1/usage reports free_requests_remaining separately from balance_credits. POST /v1/signup is retired and always returns 410 signup_disabled. Agents without an inbox can use /x402/v1/{endpoint} without an account.
servers:
- url: https://api.fastaf.co
tags:
- name: Amazon
paths:
/v1/amazon:
get:
tags:
- Amazon
summary: Amazon product or search results
description: Amazon search, product details by ASIN, offers or bestsellers as JSON with titles, prices, ratings and availability across Amazon domains.
security:
- bearerAuth: []
responses:
'200':
description: Provider response.
headers:
X-FastAF-Credits-Used:
schema:
type: integer
X-FastAF-Cost-Version:
schema:
type: string
content:
application/json:
schema:
type: object
properties:
asin:
type: string
title:
type: string
price:
type: string
availability_status:
type: string
average_rating:
type: number
total_reviews:
type: number
additionalProperties: true
example:
asin: B08N5WRWNW
title: Echo Dot (4th Gen) smart speaker
price: $49.99
availability_status: In Stock
average_rating: 4.5
total_reviews: 1234
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'402':
$ref: '#/components/responses/PaymentRequired'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'502':
$ref: '#/components/responses/BadGateway'
'503':
$ref: '#/components/responses/ServiceUnavailable'
'504':
$ref: '#/components/responses/GatewayTimeout'
x-fastaf-credit-cost:
search: 1
product: 1
reviews: 5
offers: 5
bestsellers: 5
x-fastaf-cost-version: v1
operationId: getAmazon
parameters:
- name: resource
in: query
required: false
description: 'Amazon operation: search (default), product, offers or bestsellers. Reviews are not sold. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.'
schema:
type: string
enum:
- search
- product
- offers
- bestsellers
default: search
- name: asin
in: query
required: false
description: Amazon product identifier, usually 10 letters/digits, e.g. B08N5WRWNW. Required for product and offers; not used for search/bestsellers. No default. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
schema:
type: string
maxLength: 8192
- name: query
in: query
required: false
description: Required product search text for resource=search, e.g. wireless headphones. Not valid for other resources; no default. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
schema:
type: string
maxLength: 8192
- name: domain
in: query
required: false
description: 'Amazon domain suffix, not a hostname: com, co.uk, de, in, etc.; default com. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.'
schema:
type: string
maxLength: 8192
- name: country
in: query
required: false
description: Two-letter marketplace/proxy country code, e.g. us, gb or de; default us. Unlike scrape.country, this has no FastAF surcharge. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
schema:
type: string
maxLength: 8192
- name: language
in: query
required: false
description: 'Product-data language code, e.g. en, de or fr; omitted: marketplace default. Valid for search, product and bestsellers. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.'
schema:
type: string
maxLength: 8192
- name: postal_code
in: query
required: false
description: 'Delivery postal/ZIP code, e.g. 10001, to localize availability and price. Valid for search/product/offers; omitted: source-default delivery location. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.'
schema:
type: string
maxLength: 8192
- name: page
in: query
required: false
description: One-based page number, default 1. Search accepts 1-100; bestsellers accepts 1-2 (set full_list=false for a single page). Each request is billed separately. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
schema:
type: integer
minimum: 1
maximum: 100
- name: premium
in: query
required: false
description: Use premium proxies for resource=search; true/false, default false. Not valid for product/offers/bestsellers; no FastAF surcharge. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
schema:
type: boolean
- name: sort_by
in: query
required: false
description: 'Review order: helpful or recent. Reviews are currently unavailable, so requests using this option are rejected without charge; no FastAF default. No credits charged for rejected requests.'
schema:
type: string
enum:
- helpful
- recent
- name: filter_by_star
in: query
required: false
description: 'Review rating filter: all_stars, five_star, four_star, three_star, two_star, one_star, positive or critical. Reviews unavailable; rejected without charge; no FastAF default. No credits charged for rejected requests.'
schema:
type: string
enum:
- all_stars
- five_star
- four_star
- three_star
- two_star
- one_star
- positive
- critical
- name: reviewer_type
in: query
required: false
description: 'Review author filter: all_reviews or avp_only_reviews (verified purchases). Reviews unavailable; rejected without charge; no FastAF default. No credits charged for rejected requests.'
schema:
type: string
enum:
- all_reviews
- avp_only_reviews
- name: media_type
in: query
required: false
description: 'Review attachment filter: all_contents or media_reviews_only. Reviews unavailable; rejected without charge; no FastAF default. No credits charged for rejected requests.'
schema:
type: string
enum:
- all_contents
- media_reviews_only
- name: format_type
in: query
required: false
description: 'Review product-variant filter: all_formats or current_format. Reviews unavailable; rejected without charge; no FastAF default. No credits charged for rejected requests.'
schema:
type: string
enum:
- all_formats
- current_format
- name: url
in: query
required: false
description: Full HTTP(S) Amazon reviews URL, an alternative to ASIN for reviews. Reviews are unavailable; this option is rejected without charge. No default. No credits charged for rejected requests.
schema:
type: string
maxLength: 8192
- name: category_id
in: query
required: false
description: Bestseller category slug, node ID or slug/node pair, e.g. kitchen, 289668 or kitchen/289668. Omit for all departments; bestsellers only. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
schema:
type: string
maxLength: 8192
- name: type
in: query
required: false
description: 'Ranked list for bestsellers: bestsellers (default), new_releases, movers_and_shakers, most_wished_for or most_gifted. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.'
schema:
type: string
enum:
- bestsellers
- new_releases
- movers_and_shakers
- most_wished_for
- most_gifted
- name: full_list
in: query
required: false
description: For bestsellers, true returns the combined ranked list (upstream default true); false returns only page. Boolean; no FastAF surcharge for the full list. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
schema:
type: boolean
post:
tags:
- Amazon
summary: Amazon product or search results
description: Amazon search, product details by ASIN, offers or bestsellers as JSON with titles, prices, ratings and availability across Amazon domains.
security:
- bearerAuth: []
responses:
'200':
description: Provider response.
headers:
X-FastAF-Credits-Used:
schema:
type: integer
X-FastAF-Cost-Version:
schema:
type: string
content:
application/json:
schema:
type: object
properties:
asin:
type: string
title:
type: string
price:
type: string
availability_status:
type: string
average_rating:
type: number
total_reviews:
type: number
additionalProperties: true
example:
asin: B08N5WRWNW
title: Echo Dot (4th Gen) smart speaker
price: $49.99
availability_status: In Stock
average_rating: 4.5
total_reviews: 1234
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'402':
$ref: '#/components/responses/PaymentRequired'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'502':
$ref: '#/components/responses/BadGateway'
'503':
$ref: '#/components/responses/ServiceUnavailable'
'504':
$ref: '#/components/responses/GatewayTimeout'
x-fastaf-credit-cost:
search: 1
product: 1
reviews: 5
offers: 5
bestsellers: 5
x-fastaf-cost-version: v1
operationId: postAmazon
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: false
properties:
resource:
type: string
enum:
- search
- product
- offers
- bestsellers
default: search
description: 'Amazon operation: search (default), product, offers or bestsellers. Reviews are not sold. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.'
asin:
type: string
maxLength: 8192
description: Amazon product identifier, usually 10 letters/digits, e.g. B08N5WRWNW. Required for product and offers; not used for search/bestsellers. No default. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
query:
type: string
maxLength: 8192
description: Required product search text for resource=search, e.g. wireless headphones. Not valid for other resources; no default. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
domain:
type: string
maxLength: 8192
description: 'Amazon domain suffix, not a hostname: com, co.uk, de, in, etc.; default com. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.'
country:
type: string
maxLength: 8192
description: Two-letter marketplace/proxy country code, e.g. us, gb or de; default us. Unlike scrape.country, this has no FastAF surcharge. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
language:
type: string
maxLength: 8192
description: 'Product-data language code, e.g. en, de or fr; omitted: marketplace default. Valid for search, product and bestsellers. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.'
postal_code:
type: string
maxLength: 8192
description: 'Delivery postal/ZIP code, e.g. 10001, to localize availability and price. Valid for search/product/offers; omitted: source-default delivery location. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.'
page:
type: integer
minimum: 1
maximum: 100
description: One-based page number, default 1. Search accepts 1-100; bestsellers accepts 1-2 (set full_list=false for a single page). Each request is billed separately. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
premium:
type: boolean
description: Use premium proxies for resource=search; true/false, default false. Not valid for product/offers/bestsellers; no FastAF surcharge. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
sort_by:
type: string
enum:
- helpful
- recent
description: 'Review order: helpful or recent. Reviews are currently unavailable, so requests using this option are rejected without charge; no FastAF default. No credits charged for rejected requests.'
filter_by_star:
type: string
enum:
- all_stars
- five_star
- four_star
- three_star
- two_star
- one_star
- positive
- critical
description: 'Review rating filter: all_stars, five_star, four_star, three_star, two_star, one_star, positive or critical. Reviews unavailable; rejected without charge; no FastAF default. No credits charged for rejected requests.'
reviewer_type:
type: string
enum:
- all_reviews
- avp_only_reviews
description: 'Review author filter: all_reviews or avp_only_reviews (verified purchases). Reviews unavailable; rejected without charge; no FastAF default. No credits charged for rejected requests.'
media_type:
type: string
enum:
- all_contents
- media_reviews_only
description: 'Review attachment filter: all_contents or media_reviews_only. Reviews unavailable; rejected without charge; no FastAF default. No credits charged for rejected requests.'
format_type:
type: string
enum:
- all_formats
- current_format
description: 'Review product-variant filter: all_formats or current_format. Reviews unavailable; rejected without charge; no FastAF default. No credits charged for rejected requests.'
url:
type: string
maxLength: 8192
description: Full HTTP(S) Amazon reviews URL, an alternative to ASIN for reviews. Reviews are unavailable; this option is rejected without charge. No default. No credits charged for rejected requests.
category_id:
type: string
maxLength: 8192
description: Bestseller category slug, node ID or slug/node pair, e.g. kitchen, 289668 or kitchen/289668. Omit for all departments; bestsellers only. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
type:
type: string
enum:
- bestsellers
- new_releases
- movers_and_shakers
- most_wished_for
- most_gifted
description: 'Ranked list for bestsellers: bestsellers (default), new_releases, movers_and_shakers, most_wished_for or most_gifted. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.'
full_list:
type: boolean
description: For bestsellers, true returns the combined ranked list (upstream default true); false returns only page. Boolean; no FastAF surcharge for the full list. No option surcharge; search/product cost 1 credit, offers/bestsellers 5 credits per request.
anyOf:
- required:
- query
- required:
- resource
- asin
properties:
resource:
const: product
- required:
- resource
- asin
properties:
resource:
const: offers
- required:
- resource
properties:
resource:
const: bestsellers
components:
responses:
BadGateway:
description: The upstream request failed.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
PaymentRequired:
description: The account has insufficient credits.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
TooManyRequests:
description: A rate or concurrency limit was reached.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Invalid request or parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Forbidden:
description: The account is suspended or email verification is required before data calls.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: A valid bearer API key is required.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ServiceUnavailable:
description: The service is temporarily unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
GatewayTimeout:
description: The upstream request timed out.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
message:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: API key
sessionCookie:
type: apiKey
in: cookie
name: fastaf_session