Skip to main content

Python SDK for The Companies API

Project description

The Companies API SDK for Python

PyPI version PyPI downloads Python Support License

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:

  1. Create a .env file 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
    
  2. Install test dependencies:

    pip install -e ".[test]"
    
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

thecompaniesapi-1.0.2.tar.gz (25.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

thecompaniesapi-1.0.2-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

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

Hashes for thecompaniesapi-1.0.2.tar.gz
Algorithm Hash digest
SHA256 ecfe0486856f985888bb7b1dcc09665dedc47b591905b5780f321199823e50ff
MD5 6c2aa91c2ab7acca337ad595bd170833
BLAKE2b-256 90b91b27f0febdeeec6b1447b00999a2c4609e325585d0e37043e81ec41cc682

See more details on using hashes here.

File details

Details for the file thecompaniesapi-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for thecompaniesapi-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ce3791b6f683bb2e25bcdbce7e3ad42a1ab1cf8c58cfe7fec9b5e41e4a3828a2
MD5 16ccf5cd5a6cfcd32f5d6cda2191f57b
BLAKE2b-256 eae9548c6b0281d09ccb53f3459241c3f51620d93efa924d253b2aaa172eb96e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page