OpenAPI-driven Python SDK for JustSerpAPI with a stable high-level Client as the public entrypoint.
pip install justserpapifrom justserpapi import Client
with Client(api_key="YOUR_API_KEY") as client:
response = client.google.search(
query="coffee shops in New York",
location="New York, NY",
language="en",
)
print(response)
print(response["data"])The high-level surface is designed to be the default entrypoint:
from justserpapi import Client
client = Client(api_key="YOUR_API_KEY", timeout=20.0)
search = client.google.search(query="best espresso beans", language="en")
maps = client.google.maps.search(query="espresso bars", location="Shanghai")
news = client.google.news.search(query="OpenAI", language="en")
images = client.google.images.search(query="espresso machine")
shopping = client.google.shopping.search(query="espresso tamper")
overview = client.google.ai.overview(url="https://example.com/ai-overview")
print(search["data"])
client.close()Promoted high-level responses are plain Python dictionaries that mirror the API's JSON response envelope. The SDK does not auto-unpack data.
The public client exposes the common knobs directly:
from justserpapi import Client
from urllib3.util.retry import Retry
client = Client(
api_key="YOUR_API_KEY",
base_url="https://api.justserpapi.com",
timeout=(5.0, 30.0),
retries=Retry(total=5, backoff_factor=0.5),
)
client.close()api_key: value sent in theX-API-Keyheaderbase_url: API host, defaults tohttps://api.justserpapi.comtimeout: default request timeout injected into promoted high-level methodsretries:urllib3retry configuration; defaults to a conservative retry strategy for the high-level client
This repository only owns the Python SDK. The canonical OpenAPI document plus the Python-specific control-plane files in config/, scripts/, and overlays/python/ drive generation and validation.
- If
openapi/justserpapi.openapi.jsonis committed, local generation is fully reproducible. - If it is not committed, CI can fetch and cache it by running
python scripts/sdkctl.py fetch-specwithJUSTSERPAPI_API_KEYconfigured.
If the API changes, update these files:
openapi/justserpapi.openapi.json: the current canonical spec used to validate and generate the SDKopenapi/baseline/justserpapi.openapi.json: the previous released spec snapshot used only for breaking-change checks
Typical maintenance flow after an API change:
cp /path/to/latest-openapi.json openapi/justserpapi.openapi.json
python scripts/sdkctl.py validate-examples
python scripts/sdkctl.py validate-spec
python scripts/sdkctl.py breaking-check
python scripts/sdkctl.py generate --cleanIf this new spec is the one you are about to release, update the baseline after validation:
cp openapi/justserpapi.openapi.json openapi/baseline/justserpapi.openapi.jsonOfficial releases are tag-driven:
python scripts/sdkctl.py validate-examples
python scripts/sdkctl.py verify-release --tag vX.Y.Z
python -m build
git push origin vX.Y.Z- The package version comes from
justserpapi/_version.py - If
openapi/justserpapi.openapi.jsonis committed, itsinfo.versionmust match the tag and package version - GitHub Actions publishes tagged releases to PyPI through Trusted Publishing
Distributed under the MIT License. See LICENSE for more information.
