This release is a pre-release and may not be stable for production use.
Crawlora Python SDK
Python client for the public Crawlora API. Use it to call Crawlora scraping, search, social, developer, marketplace, datasets, reviews, travel, media, books, maps, retail, ticketing, baseball, jobs, news publishers, sports, finance, prediction-market, brand, and usage endpoints with generated type stubs for editor and type-checker support.
- Runtime: Python 3.10+
- Auth:
x-api-key - Default API base URL:
https://api.crawlora.net/api/v1 - Reference: operations and recipes
Install
Published on PyPI. The current release is a
prerelease (1.41.0.dev1), so install it with --pre:
pip install --pre crawlora
(Git installs from beta tags also work, e.g.
pip install "git+https://github.com/Crawlora-org/crawlora-python-sdk.git@latest".)
API Key
Create or sign in to your Crawlora account at crawlora.net, then create an API key in the dashboard.
read -r CRAWLORA_API_KEY
export CRAWLORA_API_KEY
First Request
import os
from crawlora import CrawloraClient
crawlora = CrawloraClient(api_key=os.environ["CRAWLORA_API_KEY"])
response = crawlora.bing.search(
q="coffee shops",
count=10,
)
print(response["data"]["results"][0])
Endpoint groups are generated from the public API contract, so common calls are
available as methods such as crawlora.bing.search(...),
crawlora.youtube.transcript(...), and crawlora.google.map_search(...).
Typed Dynamic Calls
You can also call by operation id. Literal operation ids are covered by the
generated .pyi stubs, so type checkers can infer the matching parameter and
response aliases:
response = crawlora.request("bing-search", {
"q": "coffee shops",
"count": 10,
})
Generated stubs include operation ids, endpoint groups, keyword parameters, enum values, response aliases, and reserved request options.
Configuration
crawlora = CrawloraClient(
api_key=os.environ["CRAWLORA_API_KEY"],
base_url="https://api.crawlora.net/api/v1",
timeout=30,
retries=2,
retry_delay=0.25,
headers={"x-client": "my-app"},
)
Per-request options are available through reserved keyword arguments. Header
names are matched case-insensitively, so request headers can override default
auth, user-agent, and content headers without duplicating variants such as
x-api-key and X-API-KEY:
response = crawlora.bing.search(
q="coffee shops",
_timeout=10,
_headers={"x-request-id": "search-001"},
)
Text Responses
Most endpoints return JSON. _response_type must be auto, json, or
text. Endpoints that support alternate text output, such as YouTube
transcripts, can opt into text mode:
transcript = crawlora.youtube.transcript(
id="VIDEO_ID",
format="text",
_response_type="text",
)
print(transcript)
Errors
Failed API calls raise CrawloraError:
from crawlora import CrawloraError
try:
crawlora.bing.search(q="coffee shops")
except CrawloraError as error:
print(error.status, error.code, error.body)
raise
The error includes status, optional API code, parsed body, raw_body,
response headers, and the underlying parser or transport exception as
__cause__ when available. Retryable responses honor positive Retry-After
headers, capped at 30 seconds. Timeout-like transport failures use the
Crawlora request timed out SDK message.
CrawloraError has three subclasses for branching on the failure kind:
CrawloraClientError (4xx, request rejected), CrawloraServerError (5xx), and
CrawloraNetworkError (transport failure or timeout before a response).
Async
AsyncCrawloraClient mirrors the synchronous client for asyncio applications:
from crawlora import AsyncCrawloraClient
crawlora = AsyncCrawloraClient(api_key="YOUR_API_KEY")
result = await crawlora.bing.search(q="coffee shops")
It reuses the same validation, retries, and Retry-After handling, running each
request in a worker thread so the package stays dependency-free.
Pagination
client.paginate yields successive pages, advancing the page/offset query
parameter and stopping when a page returns no data:
for page in crawlora.paginate("ebay-seller-feedback", {"seller": "acme"}):
for review in page["data"]:
print(review)
AsyncCrawloraClient.paginate is the async for equivalent. Override detection
with page_param, start, step, and max_pages.
Examples
Runnable examples live under examples/ and skip cleanly when required
environment variables are missing:
python3 examples/bing_search.py
python3 examples/youtube_transcript.py
Set CRAWLORA_BASE_URL to point examples at a staging or local API.
Package Notes
The import name is crawlora:
from crawlora import CrawloraClient
The package is published on PyPI as
crawlora (a prerelease — pip install --pre crawlora). Git beta tags and the
moving latest tag also work, as shown above.
Metadata
Release files for crawlora 1.44.0.dev1
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 | |
|---|---|---|---|---|
| crawlora-1.44.0.dev1.tar.gz | 987.4 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| crawlora-1.44.0.dev1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.8 MB
Release files / crawlora-1.44.0.dev1.tar.gz
| Download URL | crawlora-1.44.0.dev1.tar.gz |
|---|---|
| Size | 987.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eef13227ddf505079ec466c02371070e40d416c53807b53151a6ea7eeaca5d7f
|
|
BLAKE2b-256 checksum How to use checksums |
3334e54162eb96937ca7e6152606b0aeeb90eaf6ef9d97d29f5c81d9257bc602
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / crawlora-1.44.0.dev1-py3-none-any.whl
| Download URL | crawlora-1.44.0.dev1-py3-none-any.whl |
|---|---|
| Size | 853.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bb7a92ae38f8f29a27aa6fe656f85248bd8baf5fe29f9f5c6b9f8e3243e16d80
|
|
BLAKE2b-256 checksum How to use checksums |
92f908fc8fc8d7d11ffc3ba01cf7ad02c032e49447632f53c4c58ac7d503af2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logSecurity for crawlora 1.44.0.dev1
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.
Attestation for crawlora-1.44.0.dev1.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 Sep 29, 2026.
Transparency logA 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.