Python SDK for The Companies API
Project description
The Companies API SDK for Python
A fully-featured Python SDK for The Companies API, providing type-safe access to company data, locations, industries, technologies, job titles, lists, and more.
If you need more details about a specific endpoint, you can find the corresponding documentation in the API reference.
You can also contact us on our livechat if you have any questions.
๐ Features
- Expose all our 30+ endpoints and gives access to 50M+ companies from your codebase
- Type-safe API client with full access to our OpenAPI schemas
- Real-time company enrichment with both synchronous and asynchronous options
- Powerful search capabilities with filters, sorting and pagination
- Create and manage your company lists
- Track and monitor enrichment actions and requests
- Generate detailed analytics and insights for searches and lists
- Natural language querying for structured company information
- Lightweight with minimal dependencies
๐ฆ Installation
pip install thecompaniesapi
That's it! The SDK includes pre-generated types and works immediately after installation.
๐ Initialize the client
Get your API token from your settings page and initialize our client with Client.
The API token is required to authenticate your requests and should be kept secure. Never commit your API token to version control or share it publicly.
from thecompaniesapi import Client
tca = Client(api_token='your-api-token')
๐ฌ Companies
Search companies
๐ Documentation
๐น๏ธ Use case: How to build a company search engine with our API
๐ To learn more about our query system, please read our documentation.
# Search companies by industry and size
response = tca.search_companies(
query=[
{"attribute": "about.industries", "operator": "or", "sign": "equals", "values": ["computer-software"]},
{"attribute": "about.totalEmployees", "operator": "or", "sign": "equals", "values": ["10-50"]}
],
size=25
)
companies = response["data"]["companies"] # Companies that match the query
meta = response["data"]["meta"] # Meta information
Search companies by name
๐ Documentation
๐น๏ธ Use case: Add a company search with autocomplete to your application
response = tca.search_companies_by_name(
name="The Companies API",
size=2
)
companies = response["data"]["companies"] # Companies that match the name
meta = response["data"]["meta"] # Meta information
Search companies using a prompt
๐ Documentation
# Search 25 companies for a specific prompt
response = tca.search_companies_by_prompt(
prompt="SaaS Companies in the United States with more than 100 employees",
size=25
)
companies = response["data"]["companies"] # Companies that match the prompt
meta = response["data"]["meta"] # Meta information
Search similar companies
๐ Documentation
# Search 25 companies that are similar to Crisp and Intercom
response = tca.search_similar_companies(
domains=["crisp.chat", "intercom.com"],
size=25
)
companies = response["data"]["companies"] # Companies that are similar to the domains
meta = response["data"]["meta"] # Meta information
Count companies matching your query
๐ Documentation
# Count how many companies are in the computer-software industry
response = tca.count_companies(
query=[
{
"attribute": "about.industries",
"operator": "or",
"sign": "equals",
"values": ["computer-software"]
}
]
)
count = response["data"] # Number of companies that match the query
Enrich a company from a domain name
๐ Documentation
# Fetch company data from our database without enrichment (faster response)
response = tca.fetch_company(domain="microsoft.com")
company = response["data"] # The company profile
# Fetch company data and re-analyze it in real-time to get fresh, up-to-date information (slower but more accurate)
response = tca.fetch_company(
domain="microsoft.com",
refresh=True
)
company = response["data"] # The company profile
Enrich a company from an email
๐ Documentation
๐น๏ธ Use case: Enrich your users at signup with the latest information about their company
# Fetch the company profile behind a professional email address
response = tca.fetch_company_by_email(email="jack@openai.com")
company = response["data"] # The company profile
Enrich a company from a social network URL
๐ Documentation
# Fetch the company profile behind a social network URL
response = tca.fetch_company_by_social(
linkedin="https://www.linkedin.com/company/apple"
)
company = response["data"] # The company profile
Find a company email patterns
๐ Documentation
# Fetch the company email patterns for a specific domain
response = tca.fetch_company_email_patterns(domain="apple.com")
patterns = response["data"] # The company email patterns
Ask a question about a company
๐ Documentation
# Ask what products a company offers using its domain
response = tca.ask_company(
domain="microsoft.com",
question="What products does this company offer?",
model="large", # 'small' is also available
fields=[
{
"key": "products",
"type": "array|string",
"description": "The products that the company offers"
}
]
)
answer = response["data"]["answer"] # Structured AI response
meta = response["data"]["meta"] # Meta information
Fetch the context of a company
๐ Documentation
# Get AI-generated strategic insights about a company
response = tca.fetch_company_context(domain="microsoft.com")
context = response["data"]["context"] # Includes market, model, differentiators, etc.
meta = response["data"]["meta"] # Meta information
Fetch analytics data for a query or your lists
๐ Documentation
# Analyze company distribution by business type
response = tca.fetch_companies_analytics(
attribute="about.businessType",
query=[
{
"attribute": "locations.headquarters.country.code",
"operator": "or",
"sign": "equals",
"values": ["us", "gb", "fr"]
}
]
)
analytics = response["data"]["data"] # Aggregated values
meta = response["data"]["meta"] # Meta information
Export analytics data in multiple formats for a search
๐ Documentation
# Export analytics to CSV
response = tca.export_companies_analytics(
format="csv",
attributes=["about.industries", "about.totalEmployees"],
query=[
{
"attribute": "technologies.active",
"operator": "or",
"sign": "equals",
"values": ["shopify"]
}
]
)
analytics = response["data"]["data"] # Aggregated values
meta = response["data"]["meta"] # Meta information
๐ฏ Actions
Request an action on one or more companies
๐ Documentation
# Request an enrichment job on multiple companies
response = tca.request_action(
domains=["microsoft.com", "apple.com"],
job="enrich-companies",
estimate=False
)
actions = response["data"]["actions"] # Track this via fetch_actions
meta = response["data"]["meta"] # Meta information
Fetch the actions for your actions
๐ Documentation
# Fetch recent actions
response = tca.fetch_actions(
status="completed",
page=1,
size=5
)
actions = response["data"]["actions"] # Actions that match the query
meta = response["data"]["meta"] # Meta information
๐ญ Industries
Search industries
๐ Documentation
# Search industries by keyword
response = tca.search_industries(
search="software",
size=10
)
industries = response["data"]["industries"] # Industries that match the keyword
meta = response["data"]["meta"] # Meta information
Find similar industries
๐ Documentation
# Find industries similar to given ones
response = tca.search_industries_similar(
industries=["saas", "fintech"]
)
similar = response["data"]["industries"] # Industries that are similar to the given ones
meta = response["data"]["meta"] # Meta information
โ๏ธ Technologies
Search technologies
๐ Documentation
# Search technologies by keyword
response = tca.search_technologies(
search="shopify",
size=10
)
technologies = response["data"]["technologies"] # Technologies that match the keyword
meta = response["data"]["meta"] # Meta information
๐ Locations
Search cities
๐ Documentation
# Search cities by name
response = tca.search_cities(
search="new york",
size=5
)
cities = response["data"]["cities"] # Cities that match the name
meta = response["data"]["meta"] # Meta information
Search counties
๐ Documentation
# Search counties by name
response = tca.search_counties(
search="orange",
size=5
)
counties = response["data"]["counties"] # Counties that match the name
meta = response["data"]["meta"] # Meta information
Search states
๐ Documentation
# Search states by name
response = tca.search_states(
search="california",
size=5
)
states = response["data"]["states"] # States that match the name
meta = response["data"]["meta"] # Meta information
Search countries
๐ Documentation
# Search countries by name
response = tca.search_countries(
search="france",
size=5
)
countries = response["data"]["countries"] # Countries that match the name
meta = response["data"]["meta"] # Meta information
Search continents
๐ Documentation
# Search continents by name
response = tca.search_continents(
search="asia",
size=5
)
continents = response["data"]["continents"] # Continents that match the name
meta = response["data"]["meta"] # Meta information
๐ผ Job titles
Enrich a job title from its name
๐ Documentation
# Enrich "chief marketing officer"
response = tca.enrich_job_titles(name="chief marketing officer")
job_title = response["data"] # Contains department, seniority, etc.
๐ Lists
Fetch your lists
๐ Documentation
# Fetch your lists
response = tca.fetch_lists()
lists = response["data"]["lists"] # Lists that match the query
meta = response["data"]["meta"] # Meta information
Create a list of companies
๐ Documentation
# Create a list of companies
response = tca.create_list(
name="My SaaS List",
type="companies"
)
new_list = response["data"] # The new list
Fetch companies in your list
๐ Documentation
# Fetch companies in a list
response = tca.fetch_companies_in_list(list_id=1234)
companies = response["data"]["companies"] # Companies that match the list
meta = response["data"]["meta"] # Meta information
Add or remove companies in your list
๐ Documentation
# Add companies to a list
response = tca.toggle_companies_in_list(
list_id=1234,
companies=["apple.com", "stripe.com"]
)
list_data = response["data"] # The updated list
๐ฅ Teams
Fetch your team
๐ Documentation
# Fetch your team details
response = tca.fetch_team()
team = response["data"] # Your team details
๐ง Utilities
Fetch the health of the API
๐ Documentation
# Check API health status
response = tca.fetch_api_health()
health = response["data"] # The health of the API
Fetch the OpenAPI schema
๐ Documentation
# Fetch OpenAPI schema
response = tca.fetch_openapi()
schema = response["data"] # The OpenAPI schema
๐งช Testing
Unit Tests
Run the unit tests that don't require an API token:
pytest tests/test_client.py -m unit
Integration Tests
The SDK includes comprehensive integration tests that make real API calls. To run them:
-
Create a
.envfile in the project root:# Required: Your API token from https://www.thecompaniesapi.com/settings/api-tokens TCA_API_TOKEN=your-api-token-here # Optional configurations TCA_API_URL=https://api.thecompaniesapi.com TCA_VISITOR_ID=your-visitor-id TCA_TIMEOUT=30
-
Install test dependencies:
pip install -e ".[test]"
-
Run integration tests:
# Run all integration tests pytest tests/test_integration.py -m integration -v # Run all tests except integration tests pytest -m "not integration" # Run all tests (unit + integration) pytest
The integration tests cover:
- Company search (GET and POST methods)
- Company counting and filtering
- Company lookup by email and domain
- Complex query serialization
- Error handling and edge cases
- Dynamic method access
- API health checks
๐ Links
๐ License
MIT License ยฉ TheCompaniesAPI
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 thecompaniesapi-1.0.2.tar.gz.
File metadata
- Download URL: thecompaniesapi-1.0.2.tar.gz
- Upload date:
- Size: 25.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ecfe0486856f985888bb7b1dcc09665dedc47b591905b5780f321199823e50ff
|
|
| MD5 |
6c2aa91c2ab7acca337ad595bd170833
|
|
| BLAKE2b-256 |
90b91b27f0febdeeec6b1447b00999a2c4609e325585d0e37043e81ec41cc682
|
File details
Details for the file thecompaniesapi-1.0.2-py3-none-any.whl.
File metadata
- Download URL: thecompaniesapi-1.0.2-py3-none-any.whl
- Upload date:
- Size: 19.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce3791b6f683bb2e25bcdbce7e3ad42a1ab1cf8c58cfe7fec9b5e41e4a3828a2
|
|
| MD5 |
16ccf5cd5a6cfcd32f5d6cda2191f57b
|
|
| BLAKE2b-256 |
eae9548c6b0281d09ccb53f3459241c3f51620d93efa924d253b2aaa172eb96e
|