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.1

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.1
File Size Uploaded Provenance
apinoa-0.1.1.tar.gz 134.3 kB With provenance Details

Built distribution (wheel)

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

Total release size: 382.5 kB

Release files / apinoa-0.1.1.tar.gz

Download URL apinoa-0.1.1.tar.gz
Size 134.3 kB
Tags Source
SHA-256 checksum
How to use checksums
a7efb80f329611e684bbff5e7babb7c9e80302ad0c5a17484505377cd7528056
BLAKE2b-256 checksum
How to use checksums
d8f64b865d0fe779f513061a502a32e691228e2880b801e02d2402c7d521ef0c
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.1-py3-none-any.whl

Download URL apinoa-0.1.1-py3-none-any.whl
Size 248.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2b259eb165a7ea29281d98266cf47c0591d4d8273ad5ab3e004a7bc40342bea2
BLAKE2b-256 checksum
How to use checksums
a178d699a18b42880745f92dfcf4aac20814cbd51cb9b50dc7703ebd56aa0ff0
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.1

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.1.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.1 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