Our dataPricingContact
Log in

API reference

Milda API

Base URL
https://api.milda.ai
Overview
Credit Usage1
  • GETCredit Usage
Company Search2
  • POSTLookup
  • POSTText Search
Companies7
  • POSTEnrichment
  • POSTStatuses
  • POSTProfiles
  • POSTEvents
  • POSTPlaces Of Performance
  • POSTGrowth Signals
  • POSTCompetitors
People2
  • POSTSearch
  • POSTVerified Email
Trade Data5
  • POSTCandidates
  • POSTAnalytics
  • POSTShipping Records
  • POSTShipment Suppliers
  • POSTShipment Recipients
Patents7
  • POSTSummary
  • POSTCo Applicants
  • POSTInventors
  • POSTTechnology Users
  • POSTTechnology Providers
  • POSTCitations
  • POSTList
Publications5
  • POSTAnalytics
  • POSTAuthors
  • POSTFunders
  • POSTCollaborating Organizations
  • POSTTop Cited Works
Risk Assessment4
  • POSTCandidates
  • POSTFinancials
  • POSTOwnership
  • POSTReport

Milda API Overview

Milda turns a company website into a detailed profile: what the company sells and to whom, where it operates, who it competes with, what it ships, patents, publishes, who works there, and what risk it carries. This page maps the endpoint groups and shows how they fit together. Each endpoint page covers its request, response, and credit cost in detail.


Getting Started

  • Base URL — https://api.milda.ai
  • Versioning — every endpoint is served under /v1. Breaking changes ship as a new version prefix, never inside /v1.
  • Authentication — send your API token in the token request header. There is no OAuth flow and no per-request signing.
  • Check your token — GET /v1/credit-usage returns the token, its expiration date, and remaining credits.
curl -X POST https://api.milda.ai/v1/companies/lookup \
  -H "token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"website": "milda.ai"}'

Almost everything else is POST with a JSON body. Company IDs (e.g. C1ffe0198c4ca3a12) link the endpoints together: search and lookup endpoints return them, and every data and insight endpoint takes them as input.


The Typical Flow

  1. Find companies — lookup when you already know the company; text-search to build a list from what companies do; status when you have URLs or emails.
  2. Get their data — enrichment for companies Milda does not hold yet, profiles for firmographics, events for the raw news feed.
  3. Go deep on one company — the insight endpoints (competitors, places-of-performance, growth-signals) and the specialised modules below (trade data, patents, publications, risk assessment).
  4. Reach the people — people/search, then people/verified-email.

Company Search

  • Find Company — POST /v1/companies/lookup
    Resolve one known company to its Milda ID by name, website, or registration number. Use this when you already know who you are looking for.

  • Text Search — POST /v1/companies/text-search
    Free-text search over what companies actually do. Accepts a plain keyword (creative agency, private credit) or a full descriptive phrase (conversion of atmospheric CO₂ into carbonate minerals using steel slag). This is the endpoint for niche segments that industry codes cannot express.


Company Data

Firmographics with corrected NACE and US SIC classifications, plus company-level insight reports built from all the data Milda holds on each company.

  • Submit Companies for Enrichment — POST /v1/companies/enrichment
    Queue companies Milda does not yet hold (status NOT_PROCESSED). Enrichment completes in 24–48 hours, after which they behave like any other company on the platform.

  • Get Company Profiles — POST /v1/companies/profiles
    Full profile documents by company ID, URL, or email: business description, activities, industries, country, size, age, and more.

  • Get Company Statuses — POST /v1/companies/status
    Up to 1,000 IDs, URLs, or emails per request. Returns each company's Milda ID and live status. It costs no credits, so use it to check what is already on the platform before spending credits on data.

  • Get Events Data — POST /v1/companies/events
    The raw business-event feed: 12 event types (investments, partnerships, contracts, prizes, and more) across up to 25 companies per request, with exclude_event_ids so you never pay twice for the same event.

  • Growth Signals — POST /v1/companies/growth-signals
    The curated version of the same material: a de-duplicated, significance-rated timeline of notable developments plus a one-sentence read on the company's trajectory. Use this for sales triggers and briefings; use events when you want every underlying mention.

  • Places of Performance — POST /v1/companies/places-of-performance
    The countries a company operates in, rather than where it is incorporated, and what it does in each: production sites, subsidiaries, offices, delivered projects.

  • Competitors — POST /v1/companies/competitors
    Companies that compete for the same buyers, whether or not they share an industry. Milda breaks the company into product and service lines, then scores rivals per line and explains where the two overlap, so you can check each result.


Trade Data

Import/export activity from shipment-level customs records. A two-step flow: resolve the company to a trade-database candidate, then query that candidate.

  1. Candidates — POST /v1/trade-data/candidates — matching companies in the trade database with their shipment counts. Free of charge.
  2. Analytics — POST /v1/trade-data/analytics — aggregated import (imp) or export (exp) report for a candidate.
  3. Shipping Records — POST /v1/trade-data/shipping-records — the individual shipments behind the analytics, paginated, with optional date filters.
  4. Shipment Suppliers / Recipients — POST /v1/trade-data/shipment-suppliers and POST /v1/trade-data/shipment-recipients — who the company sources from and who it sells to, ranked by trade volume.

Patents

The company's IP position and its place in the citation graph. All endpoints take a company_id.

  • Summary — POST /v1/patents/summary — headline KPIs: patent count, average family size, and more.
  • Patent List — POST /v1/patents/list — paginated patents, filterable by family, publication number, and filing-date range.
  • Inventors — POST /v1/patents/inventors — top inventors on the company's patents.
  • Co-applicants — POST /v1/patents/co-applicants — entities that co-applied with it.
  • Technology Users — POST /v1/patents/technology-users — organizations citing the company's patents: who builds on its technology.
  • Technology Providers — POST /v1/patents/technology-providers — organizations whose patents it cites: what it builds on.
  • Citations — POST /v1/patents/citations — patent-level incoming or outgoing citations, paginated.

Publications

Research output attributed to the company, useful for R&D-intensive and deep-tech segments. All endpoints take a company_id.

  • Analytics — POST /v1/publications/analytics — total publications, share in the top 1% most-cited worldwide, and breakdowns by year and research topic.
  • Authors — POST /v1/publications/authors — top authors publishing under the company, with h-index and publication counts.
  • Funders — POST /v1/publications/funders — who funds the research.
  • Collaborating Organizations — POST /v1/publications/collaborating-organizations — co-authoring institutions, ranked by shared publications.
  • Top Cited Works — POST /v1/publications/top-cited-works — the company's most-cited publications, paginated.

Risk Assessment

Counterparty due diligence. Like trade data, a two-step flow.

  1. Candidates — POST /v1/risk-assessment/candidates — resolves a company ID to the candidates used by the endpoints below. Free of charge.
  2. Financials — POST /v1/risk-assessment/financials — year-by-year turnover, EBITDA, total assets, employee numbers, and other metrics.
  3. Ownership — POST /v1/risk-assessment/ownership — shareholders and the hierarchical corporate ownership structure.
  4. Risk Report — POST /v1/risk-assessment/report — per-category analysis with a low/medium/high rating for geopolitical exposure, sanctions & legal, financial health, regulatory & ethics, data privacy & cyber, and ownership & governance, returned alongside the company's registration details.

People Search

Account-specific contact data, SMTP-validated and GDPR compliant.

  • People Search — POST /v1/people/search
    Employees at up to 25 companies per request (by IDs, URLs, or emails), filtered by seniority, department, country, city/region, or job-title keyword. Also refreshes existing person records.

  • Get Verified Emails — POST /v1/people/verified-email
    A verified email for a person ID from People Search. Expected bounce rate under 3%.


Credits, Tiers, and Limits

  • Credits — there are two balances: data credits for search, data, and insight endpoints, and enrichment credits for company enrichment. Cost varies per endpoint (flat, per returned result, or per page), and each endpoint page states its own. Credits are charged only after the work succeeds, so an endpoint that returns 204 No Content costs nothing.
  • Access tiers — your token carries one or more tiers. Company data and text search sit in the base tier; enrichment, trade data, patents, publications, and risk assessment require the higher tier.
  • Rate limits — 10 requests/second per token on the batch data endpoints, and 1 request/second on search and the LLM-backed insight endpoints. Exceeding a limit returns 429.

Errors

Every error response uses the same shape:

{ "detail": "Insufficient credits. For an upgrade, contact us at api@milda.ai." }
Status Meaning
204 No data available for this input — nothing charged.
401 Token missing, unknown, disabled, or expired.
403 Insufficient tier for the endpoint, or insufficient credits.
422 Request body failed validation; detail names the offending field.
429 Rate limit exceeded.
500 Something went wrong on our side. Retry, then contact support.

Questions, upgrades, or a raised limit: api@milda.ai.

Credit Usage

1 endpoint
  • GET/v1/credit-usageCredit Usage
GEThttps://api.milda.ai/v1/credit-usage

Credit Usage

no request body
01

Description

Verify the current API token's status including:

  • Whether the token is valid
  • The token's expiration date
  • The number of remaining credits available

How It Works
  • The request requires a valid API token with appropriate general access scope.
  • The endpoint responds with token details: the token string, its expiration date, and remaining credits.
  • Rate-limited to 1 request per second per token.
Response Fields
  • token: The API token string in use.
  • expiration_date: Date and time when the token expires.
  • credits: Number of credits left on the token.

Rate Limit

10 requests per second

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Responses

200 Successful Response422 Validation Error
TokenInfotypereq3 fields
tokenstringyesToken string
expiration_datestringyesExpiration date
+creditsCreditsyesRemaining credits
enrichmentnumber—default 0
datanumber—default 0

Company Search

2 endpoints
  • POST/v1/companies/lookupLookup
  • POST/v1/companies/text-searchText Search
POSThttps://api.milda.ai/v1/companies/lookup

Lookup

application/json
01

Description

Find Company

POST /v1/companies/lookup

Look up a specific company by its name, website, or registration number. Use this when you already know the company you want and need to resolve it to a company id, rather than running a broad topical search.

Request

Provide at least one identifier: - name — company name. - website — company website or domain name. - registration_number — company registration number. - country_code (optional) — restrict the lookup to a country (ISO 3166-1 alpha-2). - limit (optional) — maximum number of matches to return.

Response
  • companies — list of matching companies (SearchCompany), ranked by match quality.
  • search_id — identifier for this search.

Returns 204 No Content if no company matches.

Credits

Charged a flat fee per lookup (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyLookupItem
CompanyLookupItemtypereq5 fields
namestring | null—Company name to look up.
websitestring | null—Company website or domain name to look up.
registration_numberstring | null—Company registration number to look up.
country_codeCountryCode | null—Restrict the lookup to companies headquartered in this country (ISO 3166-1 alpha-2 code).
limitinteger—Maximum number of matching companies to return.min 0 · default 10
04

Responses

200 Successful Response422 Validation Error
CompanyLookupResponsetypereq2 fields
+companiesLookupCompany[]yes
company_idstringyesUnique identifier for the company.
namestring | null—Full name of the company.
urlstring | null—URL of the company's official website.
country_codeCountryCode | null—Company's country, as a two-letter ISO 3166-1 alpha-2 code.
sizeSize | null—Company size category based on employee count.
search_idstringyes
POSThttps://api.milda.ai/v1/companies/text-search

Text Search

application/json
01

Description

The Text Search endpoint allows users to find relevant companies on the Milda platform using a free-text query. It supports both simple keywords and detailed descriptions.


Query Options

You can input one of the following into the keyword parameter: - A specific keyword (e.g. creative agency, private credit, B2B data provider) - A highly descriptive phrase (e.g. companies that remove oil and water from gas, conversion of atmospheric CO₂ into carbonate minerals using highly reactive minerals in steel slag)

Response Data

The endpoint returns: - A list of companies, each with: - A unique Milda company ID - 18 firmographics data fields (same as the Profiles endpoint) - An additional relevance score

Relevance Score
  • 80–100%: Company specializes in the queried niche.
  • 50–79%: Company has relevant activities/products but may also operate in other areas.
  • Below 50%: Company is semantically related to the niche but doesn’t explicitly state such involvement.
Filters

You can narrow your search using filters such as: - Relevance score - Country - Industry - Company age - Company size - Other parameters

Searching within a set of companies

Pass company_ids and/or urls to restrict the search to that set of companies (max 1000). When provided, the keyword search runs only within those companies. Leave them empty to search the whole platform.

Credit Usage
  • Open keyword search (no company_ids/urls): 10 credits per search + 0.2 credit per company returned.
  • Search within a set (company_ids/urls provided): flat 10 credits per search.
Example

Open keyword search returning 100 companies: - Total cost = 10 + (0.2 × 100) = 30 credits

Exclusions

To avoid duplicates, use: - exclude_company_ids to exclude previously returned companies by ID - exclude_urls to exclude companies by URL

No credits are charged for excluded companies, so re-running a similar query returns new companies instead of repeats.

Notes
  • If limit is not specified, the endpoint returns up to 10,000 companies.
  • If your search yields 8,000+ companies, consider refining by region or country for better granularity.

Rate Limit

1 request per second

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

TextSearchItem
TextSearchItemtypereq27 fields
countriesCountryCode[] | null—Include companies headquartered in ANY of these countries.
exclude_countriesCountryCode[] | null—Exclude companies headquartered in ANY of these countries.
locationsCountryCode[] | null—Include companies with operations in ANY of these countries.
locations_notCountryCode[] | null—Exclude companies with operations in ANY of these countries.
industries_nace2digitstring[] | null—Include companies active in ANY of these NACE 2-digit industries. Example: {'47', '62'} includes companies in Retail trade (47) and Computer programming (62).
exclude_industries_nace2digitstring[] | null—Exclude companies active in ANY of these NACE 2-digit industries. Example: {'35'} excludes companies in Electricity, gas, steam and air conditioning supply (35).
industries_nace4digitstring[] | null—Include companies active in ANY of these NACE 4-digit industries. Example: {'4711', '6201'} includes companies in Retail sale in non-specialised stores with food (4711) and Computer programming activities (6201).
exclude_industries_nace4digitstring[] | null—Exclude companies active in ANY of these NACE 4-digit industries. Example: {'3521'} excludes companies in Manufacture of gas (3521).
industries_sicstring[] | null—Include companies active in ANY of these US SIC industries. Example: {'804'} includes companies in Offices of health practitioners (804).
exclude_industries_sicstring[] | null—Exclude companies active in ANY of these US SIC industries. Example: {'249'} excludes companies in Wood products not elsewhere classified (249).
value_chainsValueChain[] | null—Include companies engaged in ANY of these value chain segments.
exclude_value_chainsValueChain[] | null—Exclude companies engaged in ANY of these value chain segments.
ageAge[] | null—Filter by one or more company age categories.
sizeSize[] | null—Filter by one or more company size categories.
turnoverTurnover[] | null—Filter by one or more company turnover categories.
has_linkedinboolean—Filter for companies with a LinkedIn page.default false
has_twitterboolean—Filter for companies with a Twitter/X page.default false
has_facebookboolean—Filter for companies with a Facebook page.default false
relevance_scoreRelevanceScore[] | null—Include companies in the top-X% of relevance scores. Allowed values: high, medium, low.
momentum_scoreinteger[] | null—Include companies in the top-X% of momentum scores. Allowed values: 5, 10, 25.
keywordstringyesKeyword or phrase to search.
use_name_searchboolean—Whether to also search for companies by name.default true
company_idsstring[]—Restrict the search to these company IDs (max 1000). When provided (with `urls`), the search runs only within this set.
urlsstring[]—Restrict the search to these company URLs or domain names (max 1000).
exclude_company_idsstring[]—List of company IDs to exclude from the search results.
exclude_urlsstring[]—List of company URLs to exclude from the search results.
limitinteger | null—Maximum number of results to return.
04

Responses

200 Successful Response422 Validation Error
TextSearchResponsetypereq2 fields
+companiesSearchCompany[]yes
rankintegeryesPosition of the company in the search results, ranked by relevance.
relevance_scoreinteger | null—Relevance score assigned based on query matching.
company_idstringyesUnique identifier for the company.
namestring | null—Full name of the company.
urlstring | null—URL of the company's official website.
country_codeCountryCode | null—Company's country, as a two-letter ISO 3166-1 alpha-2 code.
sizeSize | null—Company size category based on employee count.
search_idstringyes

Companies

7 endpoints
  • POST/v1/companies/enrichmentEnrichment
  • POST/v1/companies/statusStatuses
  • POST/v1/companies/profilesProfiles
  • POST/v1/companies/eventsEvents
  • POST/v1/companies/places-of-performancePlaces Of Performance
  • POST/v1/companies/growth-signalsGrowth Signals
  • POST/v1/companies/competitorsCompetitors
POSThttps://api.milda.ai/v1/companies/enrichment

Enrichment

application/json
01

Description

This endpoint allows you to submit a list of companies for enrichment using either Milda company IDs or company URLs.

Purpose

Milda may not have data for all companies in your database. This endpoint initiates the enrichment process, which usually takes 24–48 hours to complete.

Use this when: - You want to enrich firmographic and contact data for companies currently marked as NOT_PROCESSED. - You want to check which submitted companies will eventually become available on the platform.

Enrichment Workflow
  1. Step 1 – Submit a list of companies using company_ids or urls
    → You receive their current status.
  2. Step 2 – Wait 24–48 hours, then use the Get Company Statuses endpoint
    → Check if the statuses have changed (e.g., to ON_PLATFORM).
Important:

Only companies with NOT_PROCESSED status should be submitted.
Submitting companies with any other status will not change anything.

Statuses Returned

For each company submitted, you may receive:

  • ON_PLATFORM – Data enrichment complete. Company data is now available.
  • PROCESSING – Data collection in progress (usually completes within 24 hours).
  • NOT_PROCESSED – No data previously collected. Submitting starts enrichment and status changes to PROCESSING.
  • UNAVAILABLE – Enrichment failed. Common reasons:
  • Website inaccessible
  • Site blocks data scraping
  • NOT_FOUND – Invalid or unrecognized company ID or URL
What to Do After Enrichment

Once a company reaches ON_PLATFORM status, you can:

  • Use Text Search to segment your enriched companies
  • Use Profiles to access their firmographic profile
  • Use People Search and Get Verified Emails for employee and contact data
Credit Usage
  • Free – No credits are consumed when submitting companies
  • Limit – Up to 50,000 companies (or 50,000 enrichment credits) can be submitted for enrichment

Rate Limit

10 requests per second

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyStatusRequestItem
CompanyStatusRequestItemtypereq3 fields
company_idsstring[]—Array of company ids (up to 1000)
urlsstring[]—Array of company URLs or domain addresses (up to 1000)
emailsstring[]—Array of company emails (up to 1000)
04

Responses

200 Successful Response422 Validation Error
EnrichmentSubmissiontypereq2 fields
+companiesSubmittedCompanyStatusProfile[]yesList of companies included in the enrichment request, along with their submission statuses.
requested_company_idstring | null—Company ID provided in the request, if available.
requested_urlstring | null—Company website URL provided in the request, if available.
requested_emailstring | null—Email address submitted in the request, if available.
company_idstring | null—Resolved or matched unique identifier for the company.
statusCompanyStatus | null—Status of the company, representing the result of processing and matching. Possible values: - 'ON_PLATFORM': The company is found and present on the platform. - 'PROCESSING': The company has been identified and is currently being processed. - 'NOT_PROCESSED': The company has been identified but has not been processed yet. - 'UNAVAILABLE': The company exists but data is unavailable. - 'NOT_FOUND': The company could not be found using the provided inputs. - 'INVALID_INPUT': The provided URL or email was malformed and could not be resolved.
submittedbooleanyesIndicates whether the company was successfully submitted for enrichment.
n_submittedintegeryesTotal number of companies successfully submitted for enrichment.
POSThttps://api.milda.ai/v1/companies/status

Statuses

application/json
01

Description

This endpoint is used to obtain Milda company IDs and their current/live statuses using company IDs, URLs, or emails as input.


Input Options

You can provide one of the following: - Milda company IDs (retrievable via Milda’s search endpoints) - Company URLs (formats supported: https://milda.ai/api or milda.ai) - Emails (must include the company domain, e.g., name@milda.ai)

Purpose

This endpoint helps users determine: - Which companies to submit to the Submit Companies for Enrichment endpoint
- The current processing status of previously submitted companies

If a company has a NOT_PROCESSED status, it is eligible to be submitted for enrichment. Once enriched successfully, the company status becomes ON_PLATFORM.

Status Values Returned
  • ON_PLATFORM – Company is available on Milda’s platform; data can be queried.
  • PROCESSING – Data collection is in progress; typically completed within 24 hours. Final status will be either ON_PLATFORM or UNAVAILABLE.
  • NOT_PROCESSED – No data collected yet. Submitting it via the enrichment endpoint starts processing and changes its status to PROCESSING.
  • UNAVAILABLE – Data collection failed. Often due to:
  • Inaccessible company website
  • Website restrictions (e.g., scraping not allowed)
  • NOT_FOUND – The provided company ID was not recognized. (A URL/email that resolves to a company not yet on the platform returns NOT_PROCESSED, not NOT_FOUND.)
  • INVALID_INPUT – The provided URL or email was malformed and could not be resolved to a company.
Credit Usage
  • Calling this endpoint does not consume credits.
  • Unlimited number of queries allowed.

Rate Limit

10 requests per second

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyStatusRequestItem
CompanyStatusRequestItemtypereq3 fields
company_idsstring[]—Array of company ids (up to 1000)
urlsstring[]—Array of company URLs or domain addresses (up to 1000)
emailsstring[]—Array of company emails (up to 1000)
04

Responses

200 Successful Response422 Validation Error
POSThttps://api.milda.ai/v1/companies/profiles

Profiles

application/json
01

Description

This endpoint retrieves full company profile documents using company IDs, URLs, or emails.


Input Options

You can provide one of the following: - Company IDs – Use the company_ids parameter. These can be obtained from: - Text Search - Find Company (lookup) - Company URLs – Use the urls parameter, e.g.: - https://milda.ai/api - milda.ai

Data Returned

Returns 18 firmographics fields, including: - Company name - Website URL - Business description - Key activities - Country - Locations - Company size - Company age - Turnover - Industry classifications: - NACE 2-digit - NACE 4-digit - US SIC 3-digit - Additional metadata

Note:
This endpoint does not return: - Employee lists
- Verified emails
- Events To get that data, use: - People Search - Get Verified Emails - Get Events Data

Credit Usage
  • 0.2 credits per company

Rate Limit

10 requests per second

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyDataRequestItem
CompanyDataRequestItemtypereq2 fields
company_idsstring[]—Array of company ids (up to 1000)
urlsstring[]—Array of company URLs or domain addresses (up to 1000)
04

Responses

200 Successful Response422 Validation Error
POSThttps://api.milda.ai/v1/companies/events

Events

application/json
01

Description

This endpoint returns business news and event data related to companies.


Features
  • Supports up to 25 companies per request
  • Filter results by specific event types using the event_types parameter
    (e.g. only retrieve investments or new partnerships)
  • Use exclude_event_ids to avoid receiving (and being charged for) previously retrieved events
Event Types (12 total)

Includes but is not limited to: - Investments - New partnerships - Contracts & agreements signed - Prizes won - Other significant business activities

Data Returned

Returns 8 data fields, including: - Event sentence or description - Source website URL - Event type - Additional metadata

Credit Usage
  • 1 credit per company
  • Only charged if at least one event is returned
    (No events = no charge)
  • Charges are applied per company, not per event
    (e.g., 1 credit whether a company has 1 or 10 events)

Rate Limit

10 requests per second

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

EventsDataRequestItem
EventsDataRequestItemtypereq4 fields
company_idsstring[]—List of up to 25 unique company identifiers to request event data for.
urlsstring[]—List of up to 25 company website URLs or domain names to identify companies.
event_typesEventType[]—List of event types to include in the results. If empty, all event types will be returned.
exclude_event_idsstring[] | null—Optional list of event IDs to exclude from the results (up to 100,000 entries).
04

Responses

200 Successful Response422 Validation Error
POSThttps://api.milda.ai/v1/companies/places-of-performance

Places Of Performance

application/json
01

Description

Companies — Places of Performance

POST /v1/companies/places-of-performance

The countries a company operates in, and what it does in each one: production sites, subsidiaries, offices, delivered projects. The report is built from all the data Milda holds on the company, plus web research when the company's own content is thin.

Use this endpoint when a registered address is not enough: to check whether a supplier really has operations in a market, to route a lead to the right regional team, or to qualify companies by where they deliver rather than where they are incorporated.

Request
  • company_id (required) — Company ID.
Response
  • company_scope — single_country, multinational or unknown (not enough evidence)
  • default_country — primary/home country (English name) assumed for activities with no explicit location, usually the headquarters country; unknown when none can be justified
  • countries — list of countries the company operates in:
  • country — country name in English
  • summary — what the company does in that country
  • highlights — durable facts backing the summary (sites, subsidiaries, licences, long-running contracts)
  • sources — source URLs used for that country; empty when it came from the company's own content

Returns 204 No Content when no country of performance could be established.

Notes

The report is generated on demand and cached server-side (~6 months), so the first call for a company is slower than subsequent ones.

Credits

Charged a flat fee per company (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyInsightRequest
CompanyInsightRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
PlacesOfPerformancetypereq3 fields
company_scopestringyesGeographic scope of the company's operations: `single_country` (clearly operates in one country), `multinational` (operates in several) or `unknown` (not enough evidence).
default_countrystringyesPrimary/home country (English country name) assumed for activities that carry no explicit location, usually the headquarters country. `unknown` when no country can be justified.
+countriesPlaceOfPerformance[]—Countries the company operates in and what it does in each.
countrystringyesCountry where the company performs activities (English country name).
summarystringyesWhat the company does in this country.
highlightsstring[]—Durable facts backing the summary, such as sites, subsidiaries, licences or long-running contracts.
sourcesstring[]—Source URLs used for this country. Empty when the country was derived from the company's own content.
POSThttps://api.milda.ai/v1/companies/growth-signals

Growth Signals

application/json
01

Description

Companies — Growth Signals

POST /v1/companies/growth-signals

A curated timeline of a company's notable developments (funding rounds, new contracts, partnerships, product launches, site expansions, leadership changes), with a one-sentence headline summarising its recent trajectory.

Use this endpoint when you need the story rather than the raw feed: sales triggers before an outreach call, a quick read on whether a company is expanding or stalling, or a briefing line for a company profile. Each signal is de-duplicated and summarised across the underlying sources, and rated by importance from 1 to 3, so you can filter out the minor ones.

If you need every underlying mention instead, with full source sentences and event types, use POST /v1/companies/events.

Request
  • company_id (required) — Company ID.
Response
  • headline — one-sentence summary of the company's recent trajectory
  • signals — list of signals, newest first:
  • date_display — human-readable date, as precise as the sources allow (e.g. March 2024)
  • sort_date — normalized date for sorting (YYYY-MM-DD)
  • title — short headline for the signal
  • description — one- to two-sentence summary of what happened
  • category — Funding, Partnership, Product, Contract, IP, Award, Leadership, Expansion, Financials, Hiring or Other
  • importance — 1 (minor), 2 (notable) or 3 (major)
  • source_urls — source URLs the signal was derived from

Returns 204 No Content when the company has no notable developments on record.

Notes

The timeline is generated on demand and cached server-side, so the first call for a company is slower than subsequent ones.

Credits

Charged a flat fee per company (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyInsightRequest
CompanyInsightRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
GrowthSignalstypereq2 fields
headlinestringyesOne-sentence summary of the company's recent trajectory across all signals.
+signalsGrowthSignal[]—Growth signals, newest first.
date_displaystringyesHuman-readable date of the signal, as precise as the sources allow.
sort_datestringyesNormalized date for sorting, in ISO 8601 format (YYYY-MM-DD).
titlestringyesShort headline for the signal.
descriptionstringyesOne- to two-sentence summary of what happened.
categorystringyesSignal category: `Funding`, `Partnership`, `Product`, `Contract`, `IP`, `Award`, `Leadership`, `Expansion`, `Financials`, `Hiring` or `Other`.
importanceintegeryesHow significant the signal is: 1 (minor), 2 (notable) or 3 (major).
source_urlsstring[]—Source URLs the signal was derived from.
POSThttps://api.milda.ai/v1/companies/competitors

Competitors

application/json
01

Description

Companies — Competitors

POST /v1/companies/competitors

The companies competing for the same buyers, whether or not they share the company's industry. Milda first works out what the company sells and to whom, breaks that into product and service lines, then finds and scores companies competing in those lines.

Use this endpoint to map a market around a company, to qualify a prospect against the alternatives it faces, or to expand a target list with companies that share a buyer rather than an industry code. Every competitor comes with the specific lines it contests and an explanation of where the two meet, so you can check each result.

Request
  • company_id (required) — Company ID.
Response
  • profile — how the requested company competes; null when its offering could not be established:
  • what_it_sells — its own product and service lines, named concretely
  • customers_served — the customers it sells to
  • how_it_competes — how it positions itself against alternatives
  • geographic_locality — local, regional or global: how much a competitor's proximity matters for this business
  • locality_reason — why that locality was assigned
  • dimensions — the requested company's product and service lines competitors are matched against:
  • id — dimension ID, referenced by each competitor's overlaps
  • label — short label for the line
  • offering — what the company offers in that line
  • weight — how much of the company's business the line represents (0–1)
  • competitors — competitors ordered by competition_score, strongest first:
  • company_id, name, url, domain_display, country_code, main_industry, summary — identifying and firmographic fields; pass company_id to POST /v1/companies/profiles for the full profile
  • competition_score — how strongly it competes (0–1): share of the company's product lines contested, discounted by confidence and geographic distance
  • product_coverage — share of the company's product lines it also offers (0–1)
  • confidence — confidence in the assessment (0–1), based on how much evidence was found
  • geo_tier — same_country, shared_market (operates in a market the company also serves), same_region or other
  • geo_tier_label — human-readable label for geo_tier
  • overlaps — contested lines as {dimension_id, match}, where match is same or similar
  • explanation — why it is a competitor and where the two meet

Returns 204 No Content when no competitors could be identified.

Notes

The report is generated on demand and cached server-side. A first call for a company runs two reasoning passes plus a similarity search and can take 15–30 seconds; later calls return the cached report.

Credits

Charged a flat fee per company (data credits). It is the highest fee of the three company insight endpoints, since the report is built on demand.

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyInsightRequest
CompanyInsightRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
CompetitorsReporttypereq3 fields
+profileCompetitionProfile | null—How the requested company competes. Null when its offering could not be established.
what_it_sellsstringyesThe company's own product and service lines, named concretely.
customers_servedstringyesThe customers the company sells to.
how_it_competesstringyesHow the company positions itself against alternatives.
geographic_localitystringyesHow much a competitor's proximity matters for this business: `local`, `regional` or `global`. Drives how competitors in distant markets are weighted.
locality_reasonstringyesWhy that locality was assigned.
+dimensionsCompetitorDimension[]—The requested company's product and service lines that competitors are matched against.
idstringyesDimension ID. Referenced by each competitor's `overlaps`.
labelstringyesShort label for the product or service line.
offeringstringyesWhat the company offers in this line, named concretely.
weightnumberyesHow much of the company's business this line represents (0-1).
+competitorsCompetitor[]—Competitors, ordered by `competition_score` (strongest first).
company_idstring | null—Company ID of the competitor.
namestring | null—Competitor name.
urlstring | null—Competitor website URL.
domain_displaystring | null—Competitor domain name.
country_codestring | null—Two-letter ISO 3166-1 alpha-2 country code.
main_industrystring | null—Competitor's main industry.
summarystring | null—Short description of the competitor.
competition_scorenumberyesHow strongly this company competes with the requested company (0-1): the share of its product lines contested, discounted by confidence and geographic distance. Competitors are returned in descending order.
product_coveragenumberyesShare of the requested company's product lines this competitor also offers (0-1).
confidencenumberyesConfidence in the assessment (0-1), based on how much evidence was found about the competitor.
geo_tierstringyesProximity to the requested company's market: `same_country`, `shared_market` (operates in a market the company also serves), `same_region` or `other`.
geo_tier_labelstringyesHuman-readable label for `geo_tier`.
+overlapsCompetitorOverlap[]—The requested company's product lines this competitor contests.
dimension_idstringyesID of the product line from `dimensions` that is contested.
matchstringyesHow closely the competitor's offering matches this line: `same` or `similar`.
explanationstringyesWhy this company is a competitor and where the two meet.

People

2 endpoints
  • POST/v1/people/searchSearch
  • POST/v1/people/verified-emailVerified Email
POSThttps://api.milda.ai/v1/people/search

Search

application/json
01

Description

This endpoint lets you retrieve employee lists (up to 25 companies at a time) or update existing person records.


Input Parameters
Company Filters (company_filters)

Provide one of the following to define companies: - Company IDs (company_ids) from Milda’s Company Search/Data endpoints
- Company websites, e.g. https://milda.ai/api or milda.ai
- Emails, e.g. john@milda.ai (the domain is used to identify the company)


Person Filters (person_filters)

You can narrow down results using: - Seniority (e.g. Director, C-Suite)
- Job title keyword
- Department
- Country / City / Region (person’s location, may differ from company’s)
- Person ID

Additional options: - Update existing data: submit up to 1000 person_ids to refresh latest info
- Exclude persons: use exclude_person_ids
- Limit results: set maximum number of persons to return


Response
  • Returns all people matching the criteria
  • Each person record includes 11 fields, such as:
  • Person ID
  • Name
  • LinkedIn URL
  • Country & city
  • Seniority
  • Department
  • Other metadata

Example:
If you submit 25 company URLs and filter by seniority = Directors, C-Suite, Heads, Presidents, plus job title containing "revenue", you’ll get all matching people across those companies.


Credit Usage
  • 0.05 credits per person returned

Rate Limit

1 request per second

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

PeopleSearchRequest
PeopleSearchRequesttypereq2 fields
+person_filtersPersonFiltersyes
person_idsstring[]—Specific person IDs to include (max 1000)
senioritySeniorityLevel[] | null—Job seniority levels to include
departmentDepartment[] | null—Work departments to include
countriesCountryCode[] | null—Include people from these countries
term_must_match_job_titlestring | null—Required term in job title
term_must_not_match_job_titlestring | null—Excluded term in job title
term_must_match_current_job_experiencestring | null—Required term in current job description
term_must_match_past_job_experiencestring | null—Required term in previous job description
has_linkedinboolean—Only include people with LinkedIn profiles
exclude_person_idsstring[]—Person IDs to exclude from results (max 100k)
+company_filtersPersonCompanyFiltersyes
company_idsstring[]—Specific company IDs to include (max 25)
urlsstring[]—Company domains or URLs to include (max 25, ignored if company_ids provided)
countriesCountryCode[] | null—Include companies from these countries
exclude_countriesCountryCode[] | null—Exclude companies from these countries
locationsCountryCode[] | null—Include companies active in these locations
locations_notCountryCode[] | null—Exclude companies active in these locations
industries_nace2digitstring[] | null—Include companies in these NACE2 industry codes
exclude_industries_nace2digitstring[] | null—Exclude companies in these NACE2 industry codes
industries_nace4digitstring[] | null—Include companies in these NACE4 industry codes
exclude_industries_nace4digitstring[] | null—Exclude companies in these NACE4 industry codes
industries_sicstring[] | null—Include companies in these SIC industry codes
exclude_industries_sicstring[] | null—Exclude companies in these SIC industry codes
ageAge[] | null—Company age categories to include
sizeSize[] | null—Company size categories to include
turnoverTurnover[] | null—Company revenue categories to include
momentum_scoreinteger[] | null—Top X% of companies by momentum score
04

Responses

200 Successful Response422 Validation Error
POSThttps://api.milda.ai/v1/people/verified-email

Verified Email

application/json
01

Description

This endpoint lets you retrieve a verified email for a given person, using the person ID obtained from the People Search endpoint.


Input Parameters
  • Person ID (person_id) from People Search

Response
  • Returns:
  • Person ID
  • Verified email

Credit Usage
  • 1 credit per verified email
  • Credits are only charged if an email is returned

Rate Limit

10 requests per second

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

GetVerifiedEmailRequest
GetVerifiedEmailRequesttypereq1 fields
person_idstringyesPerson IDs to get verified emails for (max 25)
04

Responses

200 Successful Response422 Validation Error
VerifiedEmailtypereq2 fields
person_idstringyesUnique identifier of the person
emailstring | null—Verified email address. Returns None if no verified email is available.

Trade Data

5 endpoints
  • POST/v1/trade-data/candidatesCandidates
  • POST/v1/trade-data/analyticsAnalytics
  • POST/v1/trade-data/shipping-recordsShipping Records
  • POST/v1/trade-data/shipment-suppliersShipment Suppliers
  • POST/v1/trade-data/shipment-recipientsShipment Recipients
POSThttps://api.milda.ai/v1/trade-data/candidates

Candidates

application/json
01

Description

Trade Data — Candidates

POST /v1/trade-data/candidates

Step 1 of trade data. Given a company, returns the matching companies (candidates) found in the trade database, each with shipment counts.

Request
  • company_id (required) — Company ID.
Response

List of candidates: - candidate_id — pass this to the other trade-data endpoints. - name, country_code - total_import_shipments, total_export_shipments

Returns 204 No Content if no matches are found.

Flow & credits

Pick a candidate_id from the results and call POST /v1/trade-data/analytics. This candidates step is free.

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

TradeCandidatesRequest
TradeCandidatesRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
POSThttps://api.milda.ai/v1/trade-data/analytics

Analytics

application/json
01

Description

Trade Data — Analytics

POST /v1/trade-data/analytics

Step 2 of trade data. Returns an aggregated import/export trade report for a selected candidate.

Request
  • company_id (required) — Company ID.
  • candidate_id (required) — from a candidates result.
  • type (required) — imp (imports) or exp (exports).
Response
  • summary — total_shipments, total_importers, total_suppliers, total_import_countries, total_export_countries
  • top_10_importer_countries / top_10_exporter_countries — each item: rank, country {name, code, name_cn}, total_value, total_shipments, total_quantity, total_weight

Returns 204 No Content if there is no report for the company.

Credits

Charged a flat fee per report (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

TradeAnalyticsRequest
TradeAnalyticsRequesttypereq3 fields
company_idstringyesCompany ID.
candidate_idstringyescandidate_id from a candidates result.
type"imp" | "exp"yes'imp' for imports, 'exp' for exports.
04

Responses

200 Successful Response422 Validation Error
TradeReporttypereq3 fields
+summaryTradeSummary | null—
total_shipmentsinteger | null—
total_importersinteger | null—
total_suppliersinteger | null—
total_import_countriesinteger | null—
total_export_countriesinteger | null—
+top_10_importer_countriesTopCountryItem[]—
rankinteger | null—
+countryTradeCountry | null—
namestring | null—
codestring | null—
name_cnstring | null—
total_valuenumber | null—
total_shipmentsinteger | null—
total_quantitynumber | null—
total_weightnumber | null—
+top_10_exporter_countriesTopCountryItem[]—
rankinteger | null—
+countryTradeCountry | null—
namestring | null—
codestring | null—
name_cnstring | null—
total_valuenumber | null—
total_shipmentsinteger | null—
total_quantitynumber | null—
total_weightnumber | null—
POSThttps://api.milda.ai/v1/trade-data/shipping-records

Shipping Records

application/json
01

Description

Trade Data — Shipping Records

POST /v1/trade-data/shipping-records

Individual import or export shipment records for a candidate company, 10 per page. Use this after candidates to drill into the raw shipments behind the analytics summary.

Request
  • candidate_id (required) — from a candidates result.
  • type (required) — import (import shipments) or export (export shipments).
  • page_no (optional, default 1) — page number; 10 records per page.
  • start_date / end_date (optional) — filter shipments by date (YYYY-MM-DD), inclusive.
Response

List of shipment records. Each record includes: id, type, hs_code, hs_code_desc, bydate, importer/exporter country fields (country_imp, country_imp_cn, country_imp_en, country_exp, country_exp_cn, country_exp_en), amount, manifest_units, manifest_qty, weight_unit, weight, transport_type, export_id, shipper_name, import_id, consignee_name, products, start_port, end_port, is_shipping, or_country, brands.

Returns 204 No Content when the page has no records.

Credits

Charged a flat fee per page (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

TradeRecordsRequest
TradeRecordsRequesttypereq5 fields
candidate_idstringyescandidate_id from a candidates result.
type"import" | "export"yes'import' for import shipments, 'export' for export shipments.
page_nointeger—Page number (10 records per page).min 1 · default 1
start_datestring | null—Earliest shipment date, inclusive (YYYY-MM-DD).
end_datestring | null—Latest shipment date, inclusive (YYYY-MM-DD).
04

Responses

200 Successful Response422 Validation Error
POSThttps://api.milda.ai/v1/trade-data/shipment-suppliers

Shipment Suppliers

application/json
01

Description

Trade Data — Shipment Suppliers

POST /v1/trade-data/shipment-suppliers

Ranked list of shipment suppliers (exporters that ship to the candidate company), 10 per page. Use this to see who the company sources from.

Request
  • candidate_id (required) — from a candidates result.
  • page_no (optional, default 1) — page number; 10 suppliers per page.
Response

List of suppliers, ranked by trade volume. Each item includes: rank, id, name, domain, country {name, code, name_cn}, total_export_value, total_shipments, total_export_quantity, total_weight, import_countries, export_countries, loading_ports, unloading_ports, products.

Returns 204 No Content when the page has no suppliers.

Credits

Charged a flat fee per page (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

TradePartnersRequest
TradePartnersRequesttypereq2 fields
candidate_idstringyescandidate_id from a candidates result.
page_nointeger—Page number (10 partners per page).min 1 · default 1
04

Responses

200 Successful Response422 Validation Error
POSThttps://api.milda.ai/v1/trade-data/shipment-recipients

Shipment Recipients

application/json
01

Description

Trade Data — Shipment Recipients

POST /v1/trade-data/shipment-recipients

Ranked list of shipment recipients (importers that receive shipments from the candidate company), 10 per page. Use this to see who the company sells to.

Request
  • candidate_id (required) — from a candidates result.
  • page_no (optional, default 1) — page number; 10 recipients per page.
Response

List of recipients, ranked by trade volume. Each item includes: rank, id, name, domain, country {name, code, name_cn}, total_import_value, total_shipments, total_import_quantity, total_weight, import_countries, export_countries, loading_ports, unloading_ports, products.

Returns 204 No Content when the page has no recipients.

Credits

Charged a flat fee per page (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

TradePartnersRequest
TradePartnersRequesttypereq2 fields
candidate_idstringyescandidate_id from a candidates result.
page_nointeger—Page number (10 partners per page).min 1 · default 1
04

Responses

200 Successful Response422 Validation Error

Patents

7 endpoints
  • POST/v1/patents/summarySummary
  • POST/v1/patents/co-applicantsCo Applicants
  • POST/v1/patents/inventorsInventors
  • POST/v1/patents/technology-usersTechnology Users
  • POST/v1/patents/technology-providersTechnology Providers
  • POST/v1/patents/citationsCitations
  • POST/v1/patents/listList
POSThttps://api.milda.ai/v1/patents/summary

Summary

application/json
01

Description

Patents — Summary

POST /v1/patents/summary

Headline patent KPIs for a company.

Request
  • company_id (required) — Company ID.
Response
  • n_patents — total patents.
  • avg_family_size — average patent family size.
  • share_cited_pct — % of patents that have been cited.
  • share_high_value_pct — % of patents classified as high-value.
  • filings_per_year — per year: { year: {granted, not_granted} }.
  • offices — per patent office: { office_code: {granted, not_granted} }.

Returns 204 No Content if the company has no patent data.

Credits

Charged a small flat fee per request (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyRequest
CompanyRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
PatentSummarytypereq6 fields
n_patentsinteger | null—Total number of patents for the company.
avg_family_sizenumber | null—Average patent family size.
share_cited_pctnumber | null—Percentage of patents that have been cited.
share_high_value_pctnumber | null—Percentage of patents classified as high-value.
filings_per_yearobject | null—Per-year filing counts: {year: {'granted': int, 'not_granted': int}}.
officesobject | null—Per patent-office counts: {office_code: {'granted': int, 'not_granted': int}}.
POSThttps://api.milda.ai/v1/patents/co-applicants

Co Applicants

application/json
01

Description

Patents — Co-applicants

POST /v1/patents/co-applicants

Top entities that co-applied for patents together with the company.

Request
  • company_id (required) — Company ID.
Response

List of entities: - name, country - n_patents — number of shared patents. - sectors — technology sectors the entity is active in.

Returns 204 No Content if there are no co-applicants.

Credits

Charged a small flat fee per request (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyRequest
CompanyRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
POSThttps://api.milda.ai/v1/patents/inventors

Inventors

application/json
01

Description

Patents — Inventors

POST /v1/patents/inventors

Top inventors on the company's patents.

Request
  • company_id (required) — Company ID.
Response

List of inventors: - name, country - n_patents — number of patents the inventor is named on.

Returns 204 No Content if there are no inventors.

Credits

Charged a small flat fee per request (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyRequest
CompanyRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
POSThttps://api.milda.ai/v1/patents/technology-users

Technology Users

application/json
01

Description

Patents — Technology Users

POST /v1/patents/technology-users

Top organizations that cite this company's patents — i.e. who builds on its technology.

Request
  • company_id (required) — Company ID.
Response
  • organizations — list of { name, country, n_citations, sectors }, ranked by citation count.
  • total — total number of citations.

Returns 204 No Content if no organizations cite the company.

Credits

Charged a small flat fee per request (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyRequest
CompanyRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
TechnologyOrgsResponsetypereq2 fields
+organizationsCitationOrganization[]—Organizations ranked by citation count.
namestring | null—Organization name.
countrystring | null—Two-letter ISO 3166-1 alpha-2 country code.
n_citationsinteger | null—Number of citations between this organization and the company.
sectorsstring[]—Technology sectors the organization is active in.
totalinteger—Total number of citations.default 0
POSThttps://api.milda.ai/v1/patents/technology-providers

Technology Providers

application/json
01

Description

Patents — Technology Providers

POST /v1/patents/technology-providers

Top organizations whose patents this company cites — i.e. the technology it builds on.

Request
  • company_id (required) — Company ID.
Response
  • organizations — list of { name, country, n_citations, sectors }, ranked by citation count.
  • total — total number of citations.

Returns 204 No Content if the company's patents cite no organizations.

Credits

Charged a small flat fee per request (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyRequest
CompanyRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
TechnologyOrgsResponsetypereq2 fields
+organizationsCitationOrganization[]—Organizations ranked by citation count.
namestring | null—Organization name.
countrystring | null—Two-letter ISO 3166-1 alpha-2 country code.
n_citationsinteger | null—Number of citations between this organization and the company.
sectorsstring[]—Technology sectors the organization is active in.
totalinteger—Total number of citations.default 0
POSThttps://api.milda.ai/v1/patents/citations

Citations

application/json
01

Description

Patents — Citations

POST /v1/patents/citations

Paginated list of individual patent-level citations to or from the company's patents.

Request
  • company_id (required) — Company ID.
  • direction (required) — citation direction:
  • incoming — patents that cite this company's patents (who builds on it).
  • outgoing — patents that this company's patents cite (what it builds on).
  • offset (default 0), limit (default 50, max 200) — pagination.
Response
  • rows — list of citations, newest first. Each row:
  • company_patent_title, company_patent_publication_nr, company_patent_link — the company's patent.
  • related_patent_title, related_patent_publication_nr, related_patent_link — the patent on the other side of the citation.
  • related_applicants — { name, country } of the related patent's applicants.
  • citation_date.
  • total — total citations available in this direction.

Returns 204 No Content if there are no citations in the requested direction.

Credits

Charged a small flat fee per page (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CitationsRequest
CitationsRequesttypereq3 fields
company_idstringyesCompany ID.
directionCitationDirectionyesCitation direction. `incoming` = patents that cite this company's patents (who builds on it); `outgoing` = patents that this company's patents cite (what it builds on).
page_nointeger—Page number (25 citations per page).min 1 · default 1
04

Responses

200 Successful Response422 Validation Error
CitationsResponsetypereq2 fields
+rowsCitation[]—Citations for the requested page, newest first.
company_patent_titlestring | null—Title of the company's patent.
company_patent_publication_nrstring | null—Publication number of the company's patent.
company_patent_linkstring | null—Link to the company's patent.
citation_datestring | null—Date the citation was made (YYYY-MM-DD).
related_patent_titlestring | null—Title of the patent on the other side of the citation.
related_patent_publication_nrstring | null—Publication number of the related patent.
related_patent_linkstring | null—Link to the related patent.
+related_applicantsApplicant[]—Applicants of the related patent.
namestring | null—Applicant name.
countrystring | null—Two-letter ISO 3166-1 alpha-2 country code.
totalinteger—Total number of citations available in this direction.default 0
POSThttps://api.milda.ai/v1/patents/list

List

application/json
01

Description

Patents — Patent List

POST /v1/patents/list

Paginated list of the company's patents, with optional filters.

Request
  • company_id (required) — Company ID.
  • offset (default 0), limit (default 50, max 200) — pagination.
  • sort_order — desc (default) or asc, by filing date.
  • family_id, publication_nr — optional exact-match filters.
  • filing_date_from, filing_date_to — optional filing-date range (YYYY-MM-DD).
  • granted — optional filter by grant status.
Response
  • rows — list of patents. Each row:
  • title, publication_nr, family_id, family_size
  • earliest_filing_date
  • high_value — whether the patent is classified as high-value.
  • citing_family_count, cited_family_count
  • patent_link
  • total — total patents available.

Returns 204 No Content if the company has no patents.

Credits

Charged a small flat fee per page (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

PatentListRequest
PatentListRequesttypereq8 fields
company_idstringyesCompany ID.
page_nointeger—Page number (25 patents per page).min 1 · default 1
sort_orderstring—Sort by filing date: 'asc' or 'desc'.default "desc"
family_idstring | null—Filter by patent family id.
publication_nrstring | null—Filter by publication number.
filing_date_fromstring | null—Earliest filing date (YYYY-MM-DD).
filing_date_tostring | null—Latest filing date (YYYY-MM-DD).
grantedboolean | null—Filter by grant status.
04

Responses

200 Successful Response422 Validation Error
PatentListResponsetypereq2 fields
+rowsPatentRow[]—The company's patents for the requested page.
titlestring | null—Patent title.
publication_nrstring | null—Patent publication number.
family_idstring | null—Patent family id.
earliest_filing_datestring | null—Earliest filing date in the family (YYYY-MM-DD).
family_sizeinteger | null—Number of patents in the family.
high_valueboolean | null—Whether the patent is classified as high-value.
citing_family_countinteger | null—Number of patent families citing this patent.
cited_family_countinteger | null—Number of patent families this patent cites.
patent_linkstring | null—Link to the patent.
totalinteger—Total number of patents available.default 0

Publications

5 endpoints
  • POST/v1/publications/analyticsAnalytics
  • POST/v1/publications/authorsAuthors
  • POST/v1/publications/fundersFunders
  • POST/v1/publications/collaborating-organizationsCollaborating Organizations
  • POST/v1/publications/top-cited-worksTop Cited Works
POSThttps://api.milda.ai/v1/publications/analytics

Analytics

application/json
01

Description

Publications — Analytics

POST /v1/publications/analytics

Publication analytics for a company: total publications, how many rank among the most-cited worldwide, and breakdowns by year and research topic.

Request
  • company_id (required) — Company ID.
Response
  • total_publications — total number of publications attributed to the company
  • top_1_percent_cited_share — share of publications in the top 1% most-cited worldwide (0–1)
  • top_10_percent_cited_share — share of publications in the top 10% most-cited worldwide (0–1)
  • publications_by_year — list of {year, works_count}, newest first
  • publications_by_topic — list of {topic, works_count}, top research topics by publication count

Returns 204 No Content if the company has no publication data.

Credits

Charged a flat fee per call (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyRequest
CompanyRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
PublicationAnalyticstypereq5 fields
total_publicationsinteger—Total number of publications attributed to the company.default 0
top_1_percent_cited_sharenumber—Share of publications in the top 1% most-cited worldwide (0-1).default 0
top_10_percent_cited_sharenumber—Share of publications in the top 10% most-cited worldwide (0-1).default 0
+publications_by_yearPublicationYearCount[]—Publication counts per year, newest first.
yearinteger | null—Publication year.
works_countinteger | null—Number of publications in that year.
+publications_by_topicPublicationTopicCount[]—Top research topics by publication count.
topicstring | null—Research topic name.
works_countinteger | null—Number of publications in that topic.
POSThttps://api.milda.ai/v1/publications/authors

Authors

application/json
01

Description

Top authors publishing under the company, ranked by their publication count at the company.

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyRequest
CompanyRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
POSThttps://api.milda.ai/v1/publications/funders

Funders

application/json
01

Description

Top funders of the company's publications, ranked by number of funded publications.

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyRequest
CompanyRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
POSThttps://api.milda.ai/v1/publications/collaborating-organizations

Collaborating Organizations

application/json
01

Description

Organizations that co-author publications with the company, ranked by number of shared publications.

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyRequest
CompanyRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
POSThttps://api.milda.ai/v1/publications/top-cited-works

Top Cited Works

application/json
01

Description

The company's most-cited publications (top 10% worldwide, since 2010), 25 per page.

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

TopCitedWorksRequest
TopCitedWorksRequesttypereq2 fields
company_idstringyesCompany ID.
page_nointeger—Page number (25 works per page).min 1 · default 1
04

Responses

200 Successful Response422 Validation Error
TopCitedWorksResponsetypereq2 fields
+resultsCitedWork[]—Top-cited works for the requested page.
titlestring | null—Publication title.
yearinteger | null—Publication year.
doistring | null—Digital Object Identifier.
cited_by_countinteger | null—Number of times the work has been cited.
citation_percentilenumber | null—Normalized citation percentile (0-1); higher means more cited.
+metaPageMeta—Pagination metadata.
countinteger—Total number of top-cited works available.default 0
pageinteger—Current page number.default 1
per_pageinteger—Works per page.default 25

Risk Assessment

4 endpoints
  • POST/v1/risk-assessment/candidatesCandidates
  • POST/v1/risk-assessment/financialsFinancials
  • POST/v1/risk-assessment/ownershipOwnership
  • POST/v1/risk-assessment/reportReport
POSThttps://api.milda.ai/v1/risk-assessment/candidates

Candidates

application/json
01

Description

Risk Assessment — Candidates

POST /v1/risk-assessment/candidates

Step 1 of risk assessment. Resolves a company id to the candidate companies used for the data endpoints. If you already pass the exact target company id, a single matching candidate is returned.

Request
  • company_id (required) — Company ID.
Response

List of candidates: - candidate_id — pass this to the data endpoints below. - registration_number, name, country_code, url, age, size

Returns 204 No Content if nothing matches.

Flow & credits

Pick a company_id and call any of the data endpoints: financials, ownership, report. This candidates step is free.

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CompanyRequest
CompanyRequesttypereq1 fields
company_idstringyesCompany ID.
04

Responses

200 Successful Response422 Validation Error
POSThttps://api.milda.ai/v1/risk-assessment/financials

Financials

application/json
01

Description

Risk Assessment — Financials

POST /v1/risk-assessment/financials

Year-by-year financials for a selected candidate.

Request
  • candidate_id (required) — Candidate ID from candidates.
Response

List of rows, each with: - metric — e.g. Turnover, EBITDA, Total-Assets, Employee-Numbers, … - one value per year key (e.g. "2023", "2022")

Returns 204 No Content if no financials are available.

Credits

Charged a small flat fee (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CandidateRequest
CandidateRequesttypereq1 fields
candidate_idstringyesCandidate ID returned by the candidates endpoint.
04

Responses

200 Successful Response422 Validation Error
CompanyFinancials[]typereq0 fields

Financials as one record per reporting year, newest first. Each record has an integer `year` plus the financial metrics (snake_cased, e.g. turnover, net_margin). The set of metrics is consistent across years for a given company; values are null where not reported.

No documented fields.

POSThttps://api.milda.ai/v1/risk-assessment/ownership

Ownership

application/json
01

Description

Risk Assessment — Ownership

POST /v1/risk-assessment/ownership

Shareholders and corporate ownership structure for a selected candidate.

Request
  • candidate_id (required) — Candidate ID from candidates.
Response
  • shareholders — list of {id, name, quantity, currency, share_value, created_at, share_type, share_price}
  • ownership_structure — list of {nr, name, country_code, registration_number} (hierarchical nr, e.g. "1.", "1.1")

Returns 204 No Content if no ownership data is available.

Credits

Charged a small flat fee (data credits).

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CandidateRequest
CandidateRequesttypereq1 fields
candidate_idstringyesCandidate ID returned by the candidates endpoint.
04

Responses

200 Successful Response422 Validation Error
Ownershiptypereq2 fields
+shareholdersShareholderItem[]—Direct shareholders of the company.
idinteger | string | null—Shareholder identifier.
namestring | null—Shareholder name.
quantitynumber | null—Number of shares held.
currencystring | null—Currency of the share value/price.
share_valuestring | null—Total value of the held shares.
created_atstring | null—Date the shareholding was recorded (YYYY-MM-DD).
share_typestring | null—Type/class of shares.
share_pricenumber | null—Price per share.
+ownership_structureOwnershipStructureRow[]—Hierarchical corporate ownership / group structure.
nrstring | null—Hierarchical position in the ownership tree (e.g. '1.', '1.1').
namestring | null—Entity name.
country_codestring | null—Two-letter ISO 3166-1 alpha-2 country code.
registration_numberstring | null—Entity registration number.
POSThttps://api.milda.ai/v1/risk-assessment/report

Report

application/json
01

Description

Risk Assessment — Risk Report

POST /v1/risk-assessment/report

The risk assessment report for a selected candidate, returned together with the company's registration details.

Request
  • candidate_id (required) — Candidate ID from candidates.
Response
  • risk_assessment_report — per-category analysis text + overall risk (low/medium/high) for: geopolitical exposure, sanctions & legal, financial health, regulatory & ethics, data privacy & cyber, ownership & governance
  • company_details — registration_number, status, date_of_incorporation, national_legal_form, link_to_national_register

Returns 204 No Content if no report is available.

Credits

Charged a flat fee per report (data credits). It is the highest fee of the risk endpoints.

02

Headers

nameinreqdescription
tokenheaderyesAPI token. Issued per account; check it with GET /v1/credit-usage.
03

Request body

CandidateRequest
CandidateRequesttypereq1 fields
candidate_idstringyesCandidate ID returned by the candidates endpoint.
04

Responses

200 Successful Response422 Validation Error
RiskReporttypereq2 fields
+risk_assessment_reportRiskAssessmentReport | null—The generated risk assessment report.
company_idstring | null—Candidate ID the report was generated for.
company_namestring | null—Company name.
countrystring | null—Company country.
geopolitical_exposurestring | null—Analysis of geopolitical exposure (e.g. ties to high-risk jurisdictions).
geopolitical_exposure_overall_riskstring | null—Overall geopolitical exposure risk: 'low', 'medium', or 'high'.
sanctions_and_legalstring | null—Analysis of sanctions listings and legal/litigation exposure.
sanctions_and_legal_overall_riskstring | null—Overall sanctions & legal risk: 'low', 'medium', or 'high'.
financial_healthstring | null—Analysis of solvency, liquidity and revenue trends.
financial_health_overall_riskstring | null—Overall financial health risk: 'low', 'medium', or 'high'.
regulatory_ethicsstring | null—Analysis of regulatory and ethics concerns.
regulatory_ethics_overall_riskstring | null—Overall regulatory & ethics risk: 'low', 'medium', or 'high'.
data_privacy_cyberstring | null—Analysis of data privacy and cybersecurity incidents (e.g. GDPR fines, breaches).
data_privacy_cyber_overall_riskstring | null—Overall data privacy & cyber risk: 'low', 'medium', or 'high'.
ownership_governancestring | null—Analysis of ownership and governance risks (e.g. parent-company exposure).
ownership_governance_overall_riskstring | null—Overall ownership & governance risk: 'low', 'medium', or 'high'.
+company_detailsCompanyDetails | null—Company registration details, returned alongside the report.
registration_numberstring | null—Official company registration number.
statusstring | null—Registration status of the company.
date_of_incorporationstring | null—Date the company was incorporated (YYYY-MM-DD).
national_legal_formstring | null—National legal form of the company.
link_to_national_registerstring | null—Link to the company's entry in its national business register.

© 2026 Milda.ai All rights reserved.

  • Privacy policy
  • Terms and Conditions