Kadoa SDK for Python
Official Python SDK for the Kadoa API, providing easy integration with Kadoa's web data extraction platform.
Installation
We recommend using uv, a fast and modern Python package manager:
uv add kadoa-sdk
# or
uv pip install kadoa-sdk
Alternatively, you can use traditional pip:
pip install kadoa-sdk
Requirements: Python 3.12 or higher
Quick Start
from kadoa_sdk import KadoaClient, KadoaClientConfig
from kadoa_sdk.extraction.types import ExtractionOptions
client = KadoaClient(
KadoaClientConfig(
api_key='your-api-key'
)
)
# AI automatically detects and extracts data
result = client.extraction.run(
ExtractionOptions(
urls=['https://sandbox.kadoa.com/ecommerce'],
name='My First Extraction'
)
)
print(f"Extracted {len(result.data)} items")
That's it! With the SDK, data is automatically extracted. For more control, specify exactly what fields you want using the builder API.
Create a Workflow from a Template
Instantiate a workflow from a published template with template_id. urls is required; template_version optionally selects a published version. user_prompt adds workflow-specific instructions to the template prompt. Do not supply entity, fields, schema_id, or monitoring, because the template controls them.
from kadoa_sdk.workflows.workflows_core_service import CreateWorkflowInput
workflow = client.workflow.create(
CreateWorkflowInput(
urls=['https://example.com/products'],
template_id='11111111-1111-4111-8111-111111111111',
template_version=2,
user_prompt='Only include products currently in stock.',
name='In-stock products',
)
)
print(workflow.id)
Data Quality Rules
Per-field rules run at the end of every workflow run. Set them for the fields you care about, and other fields keep their rules. Rules are plain dicts in the shape the API reference documents. Send editedAt as UTC ending in Z.
from datetime import datetime, timezone
workflow_id = "your-workflow-id"
edited = {
"editedBy": "user",
"editedAt": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
}
client.data_quality.upsert_rules(workflow_id, {
"title": {"kind": "STRING", "presence": {"target": 100, **edited}},
"price": {"kind": "NUMBER", "minimum": {"value": 0, **edited}},
})
rules = client.data_quality.get_rules(workflow_id) # None when none
client.data_quality.delete_field_rules(workflow_id, "price")
Node.js-only APIs
Workflow Assistant, personal Inbox, and listWorkflowRuns are currently available only in the Node.js SDK. They are not exposed by this Python SDK. See Create Workflows from Templates for template lifecycle semantics.
Realtime WebSockets
realtime = await client.connect_realtime()
realtime.on_event(lambda event: print("Event:", event))
realtime.on_connection(
lambda connected, reason=None: print("Connection:", connected, reason)
)
The SDK reconnects automatically when the realtime service drains a socket during deploys. When the server includes _cursor on events, the client resumes with lastCursor on the replacement subscribe and suppresses overlap duplicates by event["id"].
Documentation
For comprehensive documentation, examples, and API reference, visit:
- Full Documentation - Complete guide with examples
- API Reference - Detailed API documentation
- GitHub Examples - Working code examples
Requirements
- Python 3.12 or higher
- Dependencies are automatically installed
Support
- Documentation: docs.kadoa.com
- Support: support@kadoa.com
- Issues: GitHub Issues
License
MIT
Metadata
Release files for kadoa_sdk 0.21.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| kadoa_sdk-0.21.0.tar.gz | 393.5 kB | Without provenance | Details for kadoa_sdk-0.21.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| kadoa_sdk-0.21.0-py3-none-any.whl | Python 3 | none | any | Details for kadoa_sdk-0.21.0-py3-none-any.whl |
Total release size: 1.7 MB
Release files / kadoa_sdk-0.21.0.tar.gz
| Download URL | kadoa_sdk-0.21.0.tar.gz |
|---|---|
| Size | 393.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f36244770fda7a4e5d75bb4e91db67711264b339c0935fa734382d7064702636
|
|
BLAKE2b-256 checksum How to use checksums |
cb0eed90c425e0fe261b8aaec27cbf42bd3ab0b539b0ab37ed57881f467a6373
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / kadoa_sdk-0.21.0-py3-none-any.whl
| Download URL | kadoa_sdk-0.21.0-py3-none-any.whl |
|---|---|
| Size | 1.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
598f0c0916e72363fee547f62eb47e99ddd1a7b23b2767013aac34e765d02036
|
|
BLAKE2b-256 checksum How to use checksums |
78485290ab91a1b3e6cf6cf91d375ac7256ab6b6c26fd320d9a83a8bd86a1a92
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for kadoa_sdk 0.21.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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.