Python client for the SEMPITE AI Search Visibility API — check whether ChatGPT, Google AI, Perplexity, Gemini, and Claude know your brand.
Project description
sempite-python
Python client for the SEMPITE AI Search Visibility API — check whether AI engines (ChatGPT, Google AI, Perplexity, Gemini, Claude) know your brand, and whether they cite your website.
Zero dependencies (standard library only). Python 3.8+.
Install
pip install sempite
Or just copy src/sempite/__init__.py into your project — it's one file.
Get a key
Free plan — 10 checks/month, no card:
from sempite import SempiteClient
SempiteClient.request_free_key("you@company.com") # key arrives by email
or sign up at sempite.com/ai-search-visibility-api.
Quickstart
from sempite import SempiteClient
client = SempiteClient("sk_live_...") # or set the SEMPITE_API_KEY env var
result = client.check("Acme Coffee Roasters", domain="acmecoffee.com")
print(result["visibility_score"]) # 0-100, share of engines that know the brand
for engine, r in result["engines"].items():
print(f"{engine}: present={r.get('present')} cites_site={r.get('cites_site')}")
# r["snippet"] holds the first 400 chars of the engine's actual answer
Custom prompt, market, engine subset
result = client.check(
"Acme Coffee Roasters",
domain="acmecoffee.com",
market="uk", # us (default), es, mx, uk
prompt="Best specialty coffee roasters in London?",
engines=["chatgpt", "perplexity"], # default: every engine your plan includes
)
Usage / quota
print(client.usage())
# {'plan': 'starter', 'month': '2026-07', 'checks_used': 12,
# 'checks_quota': 250, 'checks_remaining': 238}
Engines & plans
| Engine | Key | Free | Starter / Pro |
|---|---|---|---|
| Google AI Mode | google_ai |
✅ | ✅ |
| ChatGPT | chatgpt |
✅ | ✅ |
| Perplexity | perplexity |
— | ✅ |
| Gemini | gemini |
— | ✅ |
| Claude | claude |
— | ✅ |
Free = 10 checks/month · Starter ($29/mo) = 250 · Pro ($99/mo) = 1,000. Rate limit: 10 requests/minute per key.
Errors
from sempite import SempiteClient, AuthError, QuotaError, RateLimitError, SempiteError
try:
result = client.check("Acme")
except QuotaError as e: # 402 — quota reached or engine needs a paid plan
print(e, "→", e.upgrade_url)
except RateLimitError: # 429 — slow down (10 req/min)
...
except AuthError: # 401 — bad or revoked key
...
except SempiteError as e: # anything else; e.status, e.payload
...
Response shape
{
"brand": "Acme Coffee Roasters",
"domain": "acmecoffee.com",
"market": "us",
"prompt": "Who is Acme Coffee Roasters?",
"engines": {
"google_ai": {"present": true, "cites_site": true, "snippet": "Acme Coffee Roasters is..."},
"chatgpt": {"present": true, "cites_site": false, "snippet": "..."}
},
"visibility_score": 100,
"checks_used": 3,
"checks_quota": 10,
"plan": "free",
"checked_at": "2026-07-19T15:04:05Z"
}
visibility_score = share of successfully-queried engines that recognized the brand (name present, no refusal). cites_site = the engine's answer mentioned your domain.
Links
API docs · Pricing · Free visibility check (no key) · AI Visibility Index — monthly research · SEMPITE
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sempite-0.1.0.tar.gz.
File metadata
- Download URL: sempite-0.1.0.tar.gz
- Upload date:
- Size: 5.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f25343f24ddc44ce2f11db3ceb9e9764e8ade7d3d10c1a709da6465fff19920
|
|
| MD5 |
37e121ad703d4e11e156cb71bc61cc07
|
|
| BLAKE2b-256 |
c5e63bfe6d1705606c21f8e6c2cd020fd891498e5e5eaf7040ba56f22f9cdbcd
|
Provenance
The following attestation bundles were made for sempite-0.1.0.tar.gz:
Publisher:
publish.yml on SEMPITEHQ/sempite-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sempite-0.1.0.tar.gz -
Subject digest:
6f25343f24ddc44ce2f11db3ceb9e9764e8ade7d3d10c1a709da6465fff19920 - Sigstore transparency entry: 2202953572
- Sigstore integration time:
-
Permalink:
SEMPITEHQ/sempite-python@ec4291909c9400c621d5ab6e958b3c638267ea23 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/SEMPITEHQ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ec4291909c9400c621d5ab6e958b3c638267ea23 -
Trigger Event:
release
-
Statement type:
File details
Details for the file sempite-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sempite-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a1dba8df75d7ad3ffc2c745b81b46c0bd8be5baa619bfcff68989a9bd18c883
|
|
| MD5 |
e8ac4c884315c1841932a69a369d5823
|
|
| BLAKE2b-256 |
052de5b14193686331b2670e75e9e12b21fe086cc62f70dc38438830794825fa
|
Provenance
The following attestation bundles were made for sempite-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on SEMPITEHQ/sempite-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sempite-0.1.0-py3-none-any.whl -
Subject digest:
7a1dba8df75d7ad3ffc2c745b81b46c0bd8be5baa619bfcff68989a9bd18c883 - Sigstore transparency entry: 2202953710
- Sigstore integration time:
-
Permalink:
SEMPITEHQ/sempite-python@ec4291909c9400c621d5ab6e958b3c638267ea23 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/SEMPITEHQ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ec4291909c9400c621d5ab6e958b3c638267ea23 -
Trigger Event:
release
-
Statement type: