COMPANYAI API MCP READY

VentureRadar Company Discovery API

Most company data tells you how much a startup raised. This one tells you who backed it. Every profile carries a fundingSignals array naming the accelerators, incubators, grants and awards on record, each with a link to the backer's own page, alongside sector focus, founding year, location, ownership, LinkedIn and four scoring dimensions. That provenance is the thing deal-sourcing actually filters on, and it is rarely available as structured data.

RECORDS2
MEDIAN LAGon demand
FIELDS26

Input parameters

PARAMETERTYPEREQDEFAULTDESCRIPTION
companyUrls string[] yes One or more company profile URLs in the form https://www.ventureradar.com/organisation//. Both halves are required: a company name on its own cannot be resolved. Up to 1000 per run, de-duplicated in order, collected in chunks of 20. One company profile returned is one charge; an input that returns nothing is not charged. — drives your bill

Output schema

FIELDTYPEDESCRIPTIONNULLABLE
result_type string company or error. Present on every row, so one pass over the dataset is safe. no
companyId string Stable profile identifier, the uuid half of the profile URL. yes
companyName string Company name as listed on the profile. yes
profileUrl string The profile this row was collected from. The natural join and upsert key. yes
website string The company's own website. yes
description string What the company does, in a paragraph. Ran 400 to 700 characters on live records. yes
descriptionSource string Where the description came from, for example directory research, a community submission or Wikipedia. Useful for judging how much to trust the text. yes
location string Country or region as listed. yes
country string Country code where the source publishes one, otherwise a copy of location. On both live records it matched location exactly, so do not treat it as ISO. yes
founded integer Year founded, coerced to a plain integer. yes
ownership string Ownership status, for example Privately Held or Private Company. yes
keywords string[] Descriptive keywords on the profile. Often identical to areasOfFocus. yes
areasOfFocus string[] Sector and technology focus. The field to group and filter on: a company can sit in several sectors at once. yes
linkedin string Company LinkedIn page where the profile lists one. yes
twitter string Company X or Twitter profile. Absent on both live test records, so treat it as a bonus rather than a column you can rely on. yes
websitePopularity string Banded popularity of the company website, for example Low, Medium or High. yes
analystScore integer Automated analyst score on a 0 to 100 scale. Note that scores.analystScore carries the same figure on a 0 to 1000 scale. yes
scores object Sub-scores behind the headline rating: analystScore, popularityScore, socialProofScore, websiteTrafficScore. Values are passed through as the source sends them, which mixes strings and integers inside one object. yes
fundingSignals object[] The differentiator. One entry per backer with category, source and url, where category is a band such as INCUBATOR / ACCEL'R or VENTURE FUNDED and source names the backer, for example Y Combinator. No amounts, only provenance. yes
milestones object[] Dated events as text and date, for example accelerator batches, funding headlines and competition placings. Observed running back to 2014. yes
similarCompanies string[] Companies the source considers comparable. Empty on both live test records, so plan a crawl that widens by backer rather than by lookalike. yes
summary string One-line plain-language recap on every company row, naming country, founding year, top focus areas and the number of funding signals. Written so an agent can read a record without post-processing. yes
sourceUrl string On an error row, the input URL that produced no record. yes
error_message string On an error row, why the input returned nothing, in plain language: the page no longer exists, the layout changed, the source timed out. yes
error_type string On an error row, the machine-readable category: CollectionError, MissingRequiredParameter or MissingApiKey. yes
fetched_at string UTC ISO timestamp on every row. This is what makes run-over-run diffs work. no

Worked examples

One profile — the schema's own prefill, and the cheapest way to see the shape
{
  "companyUrls": [
    "https://www.ventureradar.com/organisation/Theneo/b40ae154-6867-456f-a215-d98fdae0048c"
  ]
}
Two at once — the run behind the field notes on this page, 2 companies in 26 seconds
{
  "companyUrls": [
    "https://www.ventureradar.com/organisation/Theneo/b40ae154-6867-456f-a215-d98fdae0048c",
    "https://www.ventureradar.com/organisation/Entrepreneur%20First/eae1b629-708d-4c87-ae00-1976d9d70e41"
  ]
}
An accelerator cohort — companies listed against one backer, the pattern behind backer-first sourcing
{
  "companyUrls": [
    "https://www.ventureradar.com/organisation/Flutterwave/145b5fd0-a04e-463b-abdf-1e73b8359d77",
    "https://www.ventureradar.com/organisation/Hightouch/265a97e0-202c-4032-846c-78b39aa76016",
    "https://www.ventureradar.com/organisation/GrubMarket/6d9c50c5-d7c2-4955-9a1e-c79d881c4f9a",
    "https://www.ventureradar.com/organisation/Gridware/98714a43-24eb-430e-9829-72f6b2123290"
  ]
}
A themed watchlist — climate and shipping hardware, re-run on a schedule to catch new milestones
{
  "companyUrls": [
    "https://www.ventureradar.com/organisation/Seabound/4813cea0-a53e-4403-a9d8-03fffa0e0b6f",
    "https://www.ventureradar.com/organisation/Fleetzero/914ccf8c-5107-4712-b54e-b40d8e79d45f",
    "https://www.ventureradar.com/organisation/Aerones/992be6bc-0a5a-4964-8100-ca01dc84422e"
  ]
}
Deliberately broken input — a name with no id cannot resolve, and comes back as an error row not a crash
{
  "companyUrls": [
    "https://www.ventureradar.com/organisation/Theneo"
  ]
}
POWER-USER TIP
The two analyst scores are on different scales — Top-level analystScore is 0 to 100 and scores.analystScore is the same figure on a 0 to 1000 scale, so the same company reads as 75 in one field and "750" in the other. Pick one and stick to it, or a chart built from a mixed join will look like an order-of-magnitude spread that is not there.
POWER-USER TIP
Cast the scores object before you compare — Inside scores the source does not commit to one serialization. On live records analystScore and websiteTrafficScore arrived as strings while popularityScore and socialProofScore arrived as integers, in the same object, on the same row. Coerce before sorting or "964" will rank below 342.
POWER-USER TIP
Backer pages are the discovery layer this API does not have — There is no search endpoint: you have to bring profile URLs. The practical source of them is the directory's own backer page, at /source//, which lists the companies attributed to that accelerator or fund. Every fundingSignals entry returns exactly that URL, so one company you already know expands into a cohort you can feed straight back in.
POWER-USER TIP
A run budget silently trims the batch — Before collecting anything the Actor divides the run's maximum total charge by the per-company price and processes only that many URLs, logging a warning for the rest. Send 1000 URLs on a budget that covers 200 and you get 200 rows and no error. Check the run log line that reports how many of your URLs were actually processed.
POWER-USER TIP
Coverage is bimodal, so sample before you commit — An actively tracked startup fills nearly every field; a long-tail entry can come back with little more than a name, a URL and a popularity band. Empty fields are omitted from the row rather than returned blank, so a thin profile reads as thin rather than broken. Run ten URLs before you run a thousand.

Coverage

23
fields on a company row — 21 of them populated on both live test records
1,000
profile URLs per run — de-duplicated, collected in chunks of 20
4
scoring dimensions — analyst · popularity · social proof · website traffic
2
saved dataset views — company overview · funding signals

Tasks

Saved runs with the inputs already filled in — each one a standalone page and a working configuration example.

Request a task →

Written about this source

Walkthroughs, worked examples and posts about this source.

Code

curl

curl -X POST "https://api.apify.com/v2/acts/johnvc~ventureradar-company-api/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"companyUrls":["https://www.ventureradar.com/organisation/Theneo/b40ae154-6867-456f-a215-d98fdae0048c"]}'

Python

from apify_client import ApifyClient

client = ApifyClient("APIFY_TOKEN")
run = client.actor("johnvc/ventureradar-company-api").call(
    run_input={
        "companyUrls": [
            "https://www.ventureradar.com/organisation/Theneo/b40ae154-6867-456f-a215-d98fdae0048c",
            "https://www.ventureradar.com/organisation/Entrepreneur%20First/eae1b629-708d-4c87-ae00-1976d9d70e41",
        ]
    }
)

for row in client.dataset(run.default_dataset_id).iterate_items():
    if row.get("result_type") != "company":
        print("skipped:", row.get("sourceUrl"), row.get("error_message"))
        continue
    backers = [s.get("source") for s in row.get("fundingSignals") or []]
    print(row["companyName"], row.get("founded"), "|", ", ".join(backers) or "no signals")

Backer-first expansion

# fundingSignals returns the backer's own page on the source site. That page
# lists the other companies attributed to the same accelerator or fund, which
# is how you turn one known company into a cohort worth collecting.
from apify_client import ApifyClient

client = ApifyClient("APIFY_TOKEN")
run = client.actor("johnvc/ventureradar-company-api").call(
    run_input={"companyUrls": ["https://www.ventureradar.com/organisation/Theneo/b40ae154-6867-456f-a215-d98fdae0048c"]}
)

for row in client.dataset(run.default_dataset_id).iterate_items():
    for signal in row.get("fundingSignals") or []:
        print(signal["category"], "|", signal["source"], "|", signal.get("url"))

Changelog

2026-08-08 0.0.8 Rebuilt after a fleet-wide fix for numeric fields that arrive as strings, and the MCP call path was re-verified on this build.
2026-08-07 0.0.6 Published to the Apify Store with six task pages and a monthly keep-alive run.
2026-08-06 Pay-per-event pricing set: one company-scraped event per profile returned, tiered from FREE down to GOLD.

What people use it for

Alternatives

Crunchbase Company API — round sizes and named investors, where this one names the backer but never the amountours PitchBook Company API — private-market financials rather than accelerator and grant provenanceours Startup Investor Database — the firms doing the backing, filterable by stage and thesis, rather than the companies backedours
VentureRadar Similar Companies Scraper on the same marketplace — genuinely better for casting a wide net, since it takes a keyword or a seed company and returns lookalike names without needing profile URLs; it stops at the basics though, with no funding signals, no dated milestones and no per-URL error rowcompeting