Find companies that use a technology
Build a prospect list of companies whose own job postings show they use a product, graded by evidence, and download it as CSV.
Beta, early access. The technology endpoints in this guide are enabled per account. Without access they answer 404 with {"error": "company_technographics_not_enabled"} and charge nothing. Request access.
You sell something that works with Snowflake and want every company in Germany that uses it, with proof. By the end you will have a ranked list, the evidence behind each company, and a CSV for your CRM. The evidence comes from each company's own job postings: one that requires Snowflake is a stronger lead than one that named it once.
Find the technology's slug
Technologies are identified by lowercase slugs such as snowflake or apache-kafka. List a category, counted over postings in your target country, to find yours.
curl "https://api.jobspipe.dev/v1/technologies?category=data-warehouse&country=DE&limit=10" \
-H "Authorization: Bearer jp_live_your_key_here"{
"as_of": "2026-09-25 06:00:00",
"metadata": { "total_results": 14, "limit": 10, "page": 0 },
"data": [
{
"technology": { "slug": "snowflake", "name": "Snowflake", "category": "Data Warehouse", "category_slug": "data-warehouse", "parent_category": "Data", "kind": "product", "logo": null },
"companies": 2140,
"jobs": 9800,
"first_date_found": "2022-02-11",
"last_date_found": "2026-09-24"
}
]
}Size the market
One call shows how many companies use it at each evidence tier, where, and who adopted it recently.
curl https://api.jobspipe.dev/v1/technologies/snowflake \
-H "Authorization: Bearer jp_live_your_key_here"{
"as_of": "2026-09-25 06:00:00",
"technology": { "slug": "snowflake", "name": "Snowflake", "category": "Data Warehouse", "category_slug": "data-warehouse", "parent_category": "Data", "kind": "product", "logo": null },
"companies": 18400,
"jobs": 96100,
"companies_by_tier": { "confirmed": 0, "likely": 9200, "mentioned": 9200 },
"top_countries": ["US", "GB", "DE", "IN", "CA"],
"recently_adopted": [
{ "id": "2512632719191904832", "name": "Northwind Analytics GmbH", "domain": "northwind.example", "tier": "likely", "confidence": "medium", "jobs": 3, "first_date_found": "2026-09-02", "last_date_found": "2026-09-22" }
]
}recently_adopted lists companies that first named it in the last 30 days: often the warmest leads.
Search for companies
This request finds companies with postings in Germany that name Snowflake, skips those that also name Databricks, keeps 200+ employees, and puts the most active hirers first.
curl https://api.jobspipe.dev/v1/companies/search \
-H "Authorization: Bearer jp_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"company_technology_slug_or": ["snowflake"],
"company_technology_slug_not": ["databricks"],
"company_country_code_or": ["DE"],
"tier_min": "likely",
"min_employee_count": 200,
"order_by": [{ "field": "num_jobs_last_30_days", "desc": true }],
"limit": 25
}'import requests
resp = requests.post(
"https://api.jobspipe.dev/v1/companies/search",
headers={"Authorization": "Bearer jp_live_your_key_here"},
json={
"company_technology_slug_or": ["snowflake"],
"company_technology_slug_not": ["databricks"],
"company_country_code_or": ["DE"],
"tier_min": "likely",
"min_employee_count": 200,
"order_by": [{"field": "num_jobs_last_30_days", "desc": True}],
"limit": 25,
},
timeout=60,
).json()
for c in resp["data"]:
evidence = c["technologies_found"][0]
print(c["name"], c["domain"], evidence["tier"], evidence["required_jobs"], "required")const resp = await fetch("https://api.jobspipe.dev/v1/companies/search", {
method: "POST",
headers: {
Authorization: "Bearer jp_live_your_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({
company_technology_slug_or: ["snowflake"],
company_technology_slug_not: ["databricks"],
company_country_code_or: ["DE"],
tier_min: "likely",
min_employee_count: 200,
order_by: [{ field: "num_jobs_last_30_days", desc: true }],
limit: 25,
}),
}).then((r) => r.json());
for (const c of resp.data) {
const evidence = c.technologies_found[0];
console.log(c.name, c.domain, evidence.tier, evidence.required_jobs, "required");
}Each company carries the evidence behind the match. For the next page, send metadata.next_cursor back as cursor.
{
"metadata": {
"credits_charged": 25,
"companies_already_paid": 0,
"credits_remaining": 24357,
"credits_allowance": 25000,
"next_cursor": "eyJvIjoyNX0",
"as_of": "2026-09-25 06:00:00"
},
"data": [
{
"id": "2512632719191904832",
"name": "Northwind Analytics GmbH",
"domain": "northwind.example",
"country_code": "DE",
"employee_count": 1800,
"num_jobs": 214,
"num_jobs_found": 31,
"num_jobs_last_30_days": 12,
"technology_slugs": ["snowflake", "dbt", "apache-airflow"],
"technologies_found": [
{
"technology": { "slug": "snowflake", "name": "Snowflake", "kind": "product" },
"confidence": "medium",
"tier": "likely",
"jobs": 27,
"jobs_last_30_days": 9,
"required_jobs": 19,
"preferred_jobs": 5,
"mentioned_jobs": 3,
"first_date_found": "2024-11-04",
"last_date_found": "2026-09-22",
"recency": "active",
"share": 0.1262
}
]
}
]
}Download the full list
For the whole list, the export returns every matching company in one CSV or JSON Lines file. It takes the same filters as query parameters and needs a paid plan.
curl -o snowflake-de.csv -D headers.txt \
"https://api.jobspipe.dev/v1/technologies/export?company_technology_slug_or=snowflake&company_technology_slug_not=databricks&company_country_code_or=DE&tier_min=likely&format=csv" \
-H "Authorization: Bearer jp_live_your_key_here"
grep -i "^x-" headers.txtimport requests
resp = requests.get(
"https://api.jobspipe.dev/v1/technologies/export",
headers={"Authorization": "Bearer jp_live_your_key_here"},
params={
"company_technology_slug_or": "snowflake",
"company_technology_slug_not": "databricks",
"company_country_code_or": "DE",
"tier_min": "likely",
"format": "csv",
},
stream=True,
timeout=300,
)
resp.raise_for_status()
with open("snowflake-de.csv", "wb") as f:
for chunk in resp.iter_content(chunk_size=65536):
f.write(chunk)
print("companies:", resp.headers["X-Total-Companies"], "credits:", resp.headers["X-Credits-Charged"])import { writeFile } from "node:fs/promises";
const params = new URLSearchParams({
company_technology_slug_or: "snowflake",
company_technology_slug_not: "databricks",
company_country_code_or: "DE",
tier_min: "likely",
format: "csv",
});
const resp = await fetch(`https://api.jobspipe.dev/v1/technologies/export?${params}`, {
headers: { Authorization: "Bearer jp_live_your_key_here" },
});
if (!resp.ok) throw new Error(`${resp.status}: ${await resp.text()}`);
await writeFile("snowflake-de.csv", Buffer.from(await resp.arrayBuffer()));
console.log("companies:", resp.headers.get("X-Total-Companies"), "credits:", resp.headers.get("X-Credits-Charged"));The file has one line per company and technology, with columns such as company_name, company_domain, company_employee_count, technology_slug, tier, required_jobs, jobs_last_30_days, recency and share. A search larger than your plan's cap answers 400 with export_too_large; narrow it or pass limit. See technology export for every column.
Read the evidence
Every company-technology pair has a tier:
| Tier | confidence | What it means for a sales list |
|---|---|---|
confirmed | high | Two independent checks agree. Not yet populated in the beta. |
likely | medium | A stated requirement, or named in two separate postings. The default for tier_min, and a good default for outreach. |
mentioned | low | Named once. Use tier_min: "mentioned" to cast a wide net, then qualify by hand. |
Rank with required_jobs (it runs in production), recency (active means named in the last 180 days) and jobs_last_30_days (current momentum). domain is set only when two independent sources agree on it, otherwise null.
Credits
GET /v1/technologiesandGET /v1/technologies/{slug}: 1 credit per call.- Company search: 1 credit per company returned. A company you already paid for this month is free every time it comes back;
metadata.companies_already_paidcounts those. - Export: 1 credit per call plus 1 per company you have not paid for this month. Companies paid for in a search are free in the export for the rest of the month, and the other way round.
Next: enrich each company with Enrich a lead from a domain.