Skip to main content

apinoa

The official Python SDK for apinoa: product data from Amazon, Walmart, Shopify, TikTok Shop and AliExpress, social data from TikTok, YouTube, Instagram, Threads, X, Reddit and LinkedIn, and image translation, through one API.

pip install apinoa

Requires Python 3.9 or later.

Usage

Create a key under Dashboard > API keys at apinoa.com, then:

from apinoa import Apinoa

client = Apinoa()  # reads APINOA_API_KEY; or Apinoa(api_key="...")

res = client.amazon.search(query="wool socks", price_max=30)
for item in res.data.items:
    print(item.title, item.price.amount if item.price else None)

Keep the key on your server: it spends your balance.

Every call is client.<platform>.<operation>(...), spelled the way the URL is, in snake_case: /v1/amazon/image-search is client.amazon.image_search(...), and the parameter priceMax is price_max. Every answer is { success, data, request_id }; fields beyond the documented ones are kept on the object.

Marketplaces

Every marketplace answers in one commerce schema: a Product from Amazon reads like one from Shopify.

product = client.walmart.product(id="5089499913")
reviews = client.shopify.reviews(id="allbirds.com/products/mens-tree-runners")
tree = client.amazon.categories()

Social platforms

Every platform answers in one social schema (Account, Post, Comment, Group), with what only one platform has under ext.

creator = client.tiktok.profile(username="khaby.lame")
page = client.reddit.posts(community="python")
next_page = client.reddit.posts(cursor=page.data.cursor)  # the next page: the cursor alone

Image translation

with open("product.jpg", "rb") as f:
    image = f.read()

translated = b"".join(
    client.image_translate.translate(source_language="zh-CN", target_language="ko", request=image)
)
with open("translated.jpg", "wb") as f:
    f.write(translated)

Async

AsyncApinoa has the same methods, awaitable:

import asyncio
from apinoa import AsyncApinoa

async def main() -> None:
    client = AsyncApinoa()
    res = await client.youtube.profile(username="@mkbhd")
    print(res.data.display_name)

asyncio.run(main())

Errors

A failed call raises a subclass of apinoa.core.ApiError named after its status (BadRequestError, PaymentRequiredError, NotFoundError, TooManyRequestsError, …). err.body.error.code is the stable code to branch on; every code is listed at apinoa.com/docs/errors. A failed call is not billed.

from apinoa import NotFoundError, PaymentRequiredError

try:
    client.amazon.product(id="B000000000")
except NotFoundError:
    print("no such product")
except PaymentRequiredError:
    print("top up your balance")

Retries and timeouts

429, 408 and 5xx answers are retried twice with exponential backoff, honouring Retry-After. The default timeout is 300 seconds, because image translation under load can take minutes. Both can be set per client or per call:

client = Apinoa(max_retries=4, timeout=60)
client.tiktok.posts(username="nasa", request_options={"max_retries": 0, "timeout_in_seconds": 10})

Reference

Every method and parameter: reference.md. The API itself: apinoa.com/docs. The OpenAPI document this SDK is generated from: apinoa.com/openapi.json.

License

MIT

Metadata

Release files for apinoa 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for apinoa 0.1.0
File Size Uploaded Provenance
apinoa-0.1.0.tar.gz 134.0 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for apinoa 0.1.0
File Interpreter ABI Platform
apinoa-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 382.0 kB

Release files / apinoa-0.1.0.tar.gz

Download URL apinoa-0.1.0.tar.gz
Size 134.0 kB
Tags Source
SHA-256 checksum
How to use checksums
ad7449365d07285529c99cfae13382c729aa4e2a908d3fc14962c0d47d2ddbd3
BLAKE2b-256 checksum
How to use checksums
50acc72ce780828faa6a8c5d6f3d79e0ae880682cf42ca75a477b80b75196ef6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / apinoa-0.1.0-py3-none-any.whl

Download URL apinoa-0.1.0-py3-none-any.whl
Size 248.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c436d33e553b6e15badc790220857539e882ce7ab03940771232c1978b0fb1af
BLAKE2b-256 checksum
How to use checksums
e1b5e6fd18614cb5284af00579a474450f5f3d03ce994e83bd111be238fdc153
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Security for apinoa 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for apinoa-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page