Official synchronous and asynchronous Python clients for Search1API.
API documentation: search1api.com/docs
pip install search1apifrom search1api import Search1API
client = Search1API() # reads SEARCH1API_API_KEY
response = client.search(
"latest AI agent frameworks",
max_results=10,
crawl_results=3,
)
for result in response["results"]:
print(result["title"], result["link"])Use the client as a context manager when it owns the HTTP connection pool:
with Search1API("your-api-key") as client:
print(client.usage())from search1api import AsyncSearch1API
async with AsyncSearch1API() as client:
response = await client.search("latest AI agent frameworks")deepcrawl starts a task and waits for it to finish:
result = client.deepcrawl("https://example.com", type="all")
print(result["zipUrl"])Use start_deepcrawl, get_deepcrawl_status, and wait_for_deepcrawl when
the application needs to control persistence or polling itself.
Screenshot responses are binary image bytes rather than JSON:
from pathlib import Path
screenshot = client.screenshot(
"https://example.com",
format="png",
full_page=True,
)
Path("screenshot.png").write_bytes(screenshot["data"])
print(screenshot["content_type"], screenshot.get("request_id"))The clients also support news, crawl, sitemap, trending, extract, usage, and
batch operations exposed by the Search1API HTTP API. Requests time out after
30 seconds and retry 429 and transient 5xx responses twice by default.
Authentication, payment, and validation errors are never retried. Deepcrawl
task creation is not retried automatically because it is not idempotent.
python -m venv .venv
. .venv/bin/activate
python -m pip install -e ".[dev]"
ruff format --check .
ruff check .
mypy src/search1api
pytest
python -m buildThe checked-in OpenAPI snapshot is used to verify that the client covers every public operation.
MIT