Python SDK for the VynCo Swiss Corporate Intelligence API
Project description
vynco
Python SDK for the VynCo Swiss Corporate Intelligence API. Access 500,000+ Swiss companies from the commercial register with change tracking, sanctions screening, AI-powered risk analysis, network graphs, watchlists, webhooks, and bulk data exports.
Installation
pip install vynco
Or with uv:
uv add vynco
Quick Start
import vynco
client = vynco.Client("vc_live_your_api_key")
# List companies with filtering
result = client.companies.list(query="Novartis", canton="BS")
print(f"Found {result.data.total} companies")
# Get a single company
company = client.companies.get("CHE-105.805.080")
print(f"{company.data.name}: {company.data.legal_form}")
# Sanctions screening
screening = client.screening.screen(name="Suspicious Corp")
print(f"Risk: {screening.data.risk_level} ({screening.data.hit_count} hits)")
# AI risk score
risk = client.ai.risk_score(uid="CHE-105.805.080")
print(f"Risk score: {risk.data.overall_score}/100 ({risk.data.risk_level})")
# Credit balance
credits = client.credits.balance()
print(f"Credits remaining: {credits.data.balance}")
Async Usage
import vynco
async def main():
async with vynco.AsyncClient("vc_live_your_api_key") as client:
result = await client.companies.list(query="Novartis")
print(result.data.items[0].name)
API Coverage
18 resource modules covering 69 endpoints:
| Resource | Methods |
|---|---|
client.health |
check |
client.companies |
list, get, count, events, statistics, compare, news, reports, relationships, hierarchy, fingerprint, nearby |
client.auditors |
history, tenures |
client.dashboard |
get |
client.screening |
screen |
client.watchlists |
list, create, delete, companies, add_companies, remove_company, events |
client.webhooks |
list, create, update, delete, test, deliveries |
client.exports |
create, get, download |
client.ai |
dossier, search, risk_score |
client.api_keys |
list, create, revoke |
client.credits |
balance, usage, history |
client.billing |
create_checkout, create_portal |
client.teams |
me, create, members, invite_member, update_member_role, remove_member, billing_summary |
client.changes |
list, by_company, statistics |
client.persons |
board_members |
client.analytics |
cantons, auditors, cluster, anomalies, rfm_segments, cohorts, candidates |
client.dossiers |
create, list, get, delete |
client.graph |
get, export, analyze |
Response Metadata
Every response includes header metadata for credit tracking and rate limiting:
resp = client.companies.get("CHE-105.805.080")
print(f"Request ID: {resp.meta.request_id}") # X-Request-Id
print(f"Credits used: {resp.meta.credits_used}") # X-Credits-Used
print(f"Credits remaining: {resp.meta.credits_remaining}") # X-Credits-Remaining
print(f"Rate limit: {resp.meta.rate_limit_limit}") # X-Rate-Limit-Limit
print(f"Data source: {resp.meta.data_source}") # X-Data-Source
Configuration
client = vynco.Client(
api_key="vc_live_xxx",
base_url="https://api.vynco.ch", # default
timeout=30.0, # seconds, default
max_retries=2, # default, retries on 429/5xx
)
The API key can also be set via the VYNCO_API_KEY environment variable:
export VYNCO_API_KEY=vc_live_your_api_key
client = vynco.Client() # reads from VYNCO_API_KEY
The client automatically retries on HTTP 429 (rate limited) and 5xx (server error) with
exponential backoff (500ms x 2^attempt). It respects the Retry-After header when present.
Error Handling
All API errors are mapped to typed exceptions:
try:
company = client.companies.get("CHE-000.000.000")
except vynco.AuthenticationError:
print("Invalid API key")
except vynco.InsufficientCreditsError:
print("Top up credits")
except vynco.ForbiddenError:
print("Insufficient permissions")
except vynco.NotFoundError as e:
print(f"Not found: {e.detail}")
except vynco.ValidationError as e:
print(f"Bad request: {e.detail}")
except vynco.ConflictError:
print("Resource conflict")
except vynco.RateLimitError:
print("Rate limited, retry later")
except vynco.ServerError:
print("Server error")
except vynco.VyncoError as e:
print(f"Error ({e.status}): {e.detail}")
| Exception | HTTP Status |
|---|---|
AuthenticationError |
401 |
InsufficientCreditsError |
402 |
ForbiddenError |
403 |
NotFoundError |
404 |
ConflictError |
409 |
ValidationError |
400, 422 |
RateLimitError |
429 |
ServerError |
5xx |
ServiceUnavailableError |
503 |
ConfigError |
— (client misconfiguration) |
Requirements
Development
uv sync # install dependencies
uv run pytest # run tests
uv run ruff check src/ # lint
uv run ruff format src/ # format
uv run mypy src/ # type check
License
Apache-2.0
Project details
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 vynco-2.0.0.tar.gz.
File metadata
- Download URL: vynco-2.0.0.tar.gz
- Upload date:
- Size: 81.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b02853be0a2679265bf673f92b5b2a8c0916753b4ee6564682ac770bb7631200
|
|
| MD5 |
359650f1894eaca88b8f73d470054b4f
|
|
| BLAKE2b-256 |
8eb2adc15136e3138a18c1f1b385cdf43365a211750a18b9c7d445eddf798512
|
Provenance
The following attestation bundles were made for vynco-2.0.0.tar.gz:
Publisher:
publish.yml on VynCorp/vc-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vynco-2.0.0.tar.gz -
Subject digest:
b02853be0a2679265bf673f92b5b2a8c0916753b4ee6564682ac770bb7631200 - Sigstore transparency entry: 1203472931
- Sigstore integration time:
-
Permalink:
VynCorp/vc-python@abcc4dba1ee413bba8355db31b267e7b63940dcb -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/VynCorp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@abcc4dba1ee413bba8355db31b267e7b63940dcb -
Trigger Event:
push
-
Statement type:
File details
Details for the file vynco-2.0.0-py3-none-any.whl.
File metadata
- Download URL: vynco-2.0.0-py3-none-any.whl
- Upload date:
- Size: 39.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85de561dc05dbeabe2651f4b03c5af63acc06b6117c1ac44f075bcb5ddd160d3
|
|
| MD5 |
6633467f490cdedf40a1dcf4de67f34f
|
|
| BLAKE2b-256 |
b6a0bad87051c09cf35197534da990b889af8aa3bec1f3e780850d59546836a9
|
Provenance
The following attestation bundles were made for vynco-2.0.0-py3-none-any.whl:
Publisher:
publish.yml on VynCorp/vc-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vynco-2.0.0-py3-none-any.whl -
Subject digest:
85de561dc05dbeabe2651f4b03c5af63acc06b6117c1ac44f075bcb5ddd160d3 - Sigstore transparency entry: 1203472936
- Sigstore integration time:
-
Permalink:
VynCorp/vc-python@abcc4dba1ee413bba8355db31b267e7b63940dcb -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/VynCorp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@abcc4dba1ee413bba8355db31b267e7b63940dcb -
Trigger Event:
push
-
Statement type: