Retrieve detected technologies and product installs for a company.
Fetch a company’s installed technology stack in three formats (choose what fits your integration):
- Paged JSON (stream).
- CSV export (file).
- JSONL stream.
Use Products‑in‑Use to verify specific product IDs with confidence.
Base URL: https://api.salescaddy.ai/api
Endpoints overview
-
Paged JSON —
POST /companies/{companyDomain}/products/paged?page=0&size=20→application/json -
CSV —
GET /companies/{companyDomain}/products?export=true→text/csv(binary)
Requires header:
X-On-Behalf-Of-User: <email> -
JSONL —
GET /companies/{companyDomain}/products/json?export=false→application/jsonl -
Verify (deterministic) —
POST /companies/{companyDomain}/products-in-use(body:{ "productIds": [...] })
Path parameter
companyDomain— e.g.,hilton.com
Common query parameters
page(int, default0) — only for paged JSONsize(int, default20, max ~200) — only for paged JSONexport(bool) —truefor CSV;falsefor JSONL (explicit)
Paged JSON — standard API
Example Paged JSON
curl -X 'POST' \
'https://api.salescaddy.ai/api/companies/stripe.com/products/paged?mainCategory=Sales%20Tools&mainCategory=Marketing%20Automation&export=false&page=0&size=2' \
-H 'accept: application/json' \
-H 'X-API-Key: YOUR_Api_key' \
-d ''const url = "https://api.salescaddy.ai/api/companies/hilton.com/products/paged?page=0&size=20";
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.TOKEN}` } });
console.log(await res.json());import os, requests
r = requests.get("https://api.salescaddy.ai/api/companies/hilton.com/products/paged",
params={"page":0,"size":20},
headers={"Authorization": f"Bearer {os.environ['TOKEN']}"})
print(r.json())var res = await http.GetAsync("https://api.salescaddy.ai/api/companies/hilton.com/products/paged?page=0&size=20");
Console.WriteLine(await res.Content.ReadAsStringAsync());{
"totalPages": 40,
"totalElements": 79,
"content": [
{
"id": "F74D6AAC72D62485ABA13994F96D74FE",
"companyId": "B5244EF04E80EBC5E3847CFBFD8D0C8F",
"company": "Stripe, Inc.",
"companyDomain": "stripe.com",
"industry": "Custom computer programming services",
"city": "SF",
"state": "California",
"postalCode": "94103",
"country": "United States",
"revenueRange": "$1+ Billion",
"employeeRange": "XLarge (5001+ Employees)",
"vendorDomain": "crossbeam.com",
"vendor": "Crossbeam",
"vendorId": "4492bbf7-d3e0-4308-b10c-6b048a9fc3cb",
"productId": "2483821f-fd6e-45cc-8487-8919cc91dec0",
"product": "Crossbeam",
"shortName": "Crossbeam",
"imageUrl": "https://images.g2crowd.com/uploads/product/image/1f4fdaaaabe1fc91c86aa0e77c6ade9c/crossbeam.png",
"productUrl": "https://www.crossbeam.com/how-it-works/pricing/",
"publicDetailUrl": "https://www.g2.com/products/crossbeam/reviews",
"reviewCount": 259,
"starRating": 4.8,
"avgRating": 9.55212,
"mainCategory": "Partner Ecosystem Platforms",
"mainCategoryId": "21ebfbfc-3cf7-48c8-93ee-9ca64a135d33",
"dateFirstVerified": "2024-12-14T00:00:00Z",
"dateLastVerified": "2025-10-31T00:00:00Z",
"parentCategoryId": "d2512d8f-304a-410f-bc5a-d6c42a741cef",
"parentCategory": "Partnerships Management",
"level0CategoryId": "3fee2603-1544-44c3-942d-538da46922f7",
"level0Category": "Sales Tools",
"hitCount": 179
},
{
"id": "6E7A82E117E5C45B3B5558B756ABE93A",
"companyId": "B5244EF04E80EBC5E3847CFBFD8D0C8F",
"company": "Stripe, Inc.",
"companyDomain": "stripe.com",
"industry": "Custom computer programming services",
"city": "SF",
"state": "California",
"postalCode": "94103",
"country": "United States",
"revenueRange": "$1+ Billion",
"employeeRange": "XLarge (5001+ Employees)",
"vendorDomain": "leandata.com",
"vendor": "LeanData, Inc.",
"vendorId": "54d7bde1-e9e3-4b53-a930-fd5166182f0e",
"productId": "4507df59-b490-47bd-966f-c59ebeff913f",
"product": "LeanData",
"shortName": "LeanData",
"imageUrl": "https://images.g2crowd.com/uploads/product/image/4383ee9e1984ba48a78e9bfc9057ae2a/leandata.png",
"productUrl": "https://www.leandata.com/services/",
"publicDetailUrl": "https://www.g2.com/products/leandata/reviews",
"reviewCount": 921,
"starRating": 4.6,
"avgRating": 9.1759,
"mainCategory": "Lead-to-Account Matching and Routing",
"mainCategoryId": "e7be7a9f-6de0-4ec3-99e3-23878acdf5ef",
"dateFirstVerified": "2022-04-05T00:00:00Z",
"dateLastVerified": "2022-11-22T00:00:00Z",
"parentCategoryId": "43478080-f4e3-4eb3-8aae-09664df14726",
"parentCategory": "Sales Acceleration",
"level0CategoryId": "3fee2603-1544-44c3-942d-538da46922f7",
"level0Category": "Sales Tools",
"hitCount": 313
}
]
}CSV — full export (file)
Example CSV Export
curl -sS "https://api.salescaddy.ai/api/companies/hilton.com/products?export=true" -H "Authorization: Bearer $TOKEN" -H "X-On-Behalf-Of-User: [email protected]" --output hilton-products.csvimport fs from "fs";
const url = "https://api.salescaddy.ai/api/companies/hilton.com/products?export=true";
const res = await fetch(url, {
headers: { Authorization: `Bearer ${process.env.TOKEN}`, "X-On-Behalf-Of-User":"[email protected]" }
});
const file = fs.createWriteStream("hilton-products.csv");
await new Promise((resolve, reject) => {
res.body.pipe(file);
res.body.on("error", reject);
file.on("finish", resolve);
});import os, requests
with requests.get("https://api.salescaddy.ai/api/companies/hilton.com/products",
params={"export":"true"},
headers={"Authorization": f"Bearer {os.environ['TOKEN']}",
"X-On-Behalf-Of-User":"[email protected]"},
stream=True) as r:
r.raise_for_status()
with open("hilton-products.csv","wb") as f:
for chunk in r.iter_content(8192):
if chunk: f.write(chunk)using System.Net.Http.Headers;
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", TOKEN);
http.DefaultRequestHeaders.Add("X-On-Behalf-Of-User","[email protected]");
var bytes = await http.GetByteArrayAsync("https://api.salescaddy.ai/api/companies/hilton.com/products?export=true");
System.IO.File.WriteAllBytes("hilton-products.csv", bytes);Sample response (trimmed):
CSV snippet (sample):
companyDomain,productId,productName,vendorDomain,category,categoryId,intensity
hilton.com,prod_office365,Microsoft 365,microsoft.com,Productivity,cat_productivity,0.78
hilton.com,prod_slack,Slack,salesforce.com,Collaboration,cat_collab,0.55CSV is ideal for bulk analytics and offline processing. Exports are attributed to the user in
X-On-Behalf-Of-User.
JSONL — stream (line‑delimited JSON)
Example JSONL
curl -sS "https://api.salescaddy.ai/api/companies/hilton.com/products/json?export=false" -H "Authorization: Bearer $TOKEN"const url = "https://api.salescaddy.ai/api/companies/hilton.com/products/json?export=false";
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.TOKEN}` } });
console.log((await res.text()).split("\n").slice(0,3)); // first 3 linesimport os, requests
r = requests.get("https://api.salescaddy.ai/api/companies/hilton.com/products/json",
params={"export":"false"},
headers={"Authorization": f"Bearer {os.environ['TOKEN']}"})
print("\n".join(r.text.splitlines()[:3]))var res = await http.GetAsync("https://api.salescaddy.ai/api/companies/hilton.com/products/json?export=false");
var text = await res.Content.ReadAsStringAsync();
Console.WriteLine(text.Split('\n')[0]); // first lineJSONL snippet (sample):
id,companyId,company,companyDomain,industry,city,state,postalCode,country,phone,revenueRange,employeeRange,vendorDomain,vendor,vendorId,productId,product,shortName,imageUrl,productUrl,publicDetailUrl,reviewCount,starRating,avgRating,mainCategory,mainCategoryId,dateFirstVerified,dateLastVerified,parentCategoryId,parentCategory,level0CategoryId,level0Category,hitCount
"0001C68CDB9179F4C50DEB9173C02967","FF5C054C7CD6924C570F944007CCF076","Microsoft Corporation",microsoft.com,"Computer related services",Redmond,Washington,98052,"United States",,"$1+ Billion","XLarge (5001+ Employees)",adobe.com,Adobe,"2c5c5125-75ca-4fad-908c-f65b32c7e3fc","3b83cb2f-a0ac-417d-8250-66d96975fe89","Adobe Sign","Adobe Acrobat Sign","https://images.g2crowd.com/uploads/product/image/655078e0d371d8c5d65524f6ae30a0ba/adobe-acrobat-sign.png","https://www.adobe.com/sign.html?sdid=8RVC5477&mv=partner","https://www.g2.com/products/adobe-acrobat-sign/reviews",928,4.4,8.7694,E-Signature,"527effa1-a42d-426a-85d5-654fe896424e",2011-09-09,2025-03-14,"3fee2603-1544-44c3-942d-538da46922f7","Sales Tools","3fee2603-1544-44c3-942d-538da46922f7","Sales Tools",596
"0002A38BB920957EDBABCA6DB79FC7F9","FF5C054C7CD6924C570F944007CCF076","Microsoft Corporation",microsoft.com,"Computer related services",Redmond,Washington,98052,"United States",,"$1+ Billion","XLarge (5001+ Employees)",visa.com,"Visa, Inc.","ba40d325a2881053bb8fb7e984448f4d","da62dc8b9914982b4185ae2427c60bdb",Visa,Visa,"https://logo.clearbit.com/visa.com",visa.com,visa.com,1456,3.2250133,3.1807396,"Financial Analysis","b93758c9-51b4-4df8-949c-0e5f3d822a11",2000-11-09,2024-08-15,"fcca2d47-1440-4ea5-aa17-55622d385d51","Accounting & Finance","8e0dbc8f-ac4a-4076-9eff-ac041b8b54c6",ERP,431
"00030FB7C8CA11EA4352F55361499F1B","FF5C054C7CD6924C570F944007CCF076","Microsoft Corporation",microsoft.com,"Computer related services",Redmond,Washington,98052,"United States",,"$1+ Billion","XLarge (5001+ Employees)",cloud.com,"spike cloud","e5bf47e6-d78f-499b-a90d-4144830fcb9c","5407779e-0aba-4307-9bf8-6e93e03c28ee",NetScaler,NetScaler,"https://images.g2crowd.com/uploads/product/image/8440da6cf91bc217a041207199078684/netscaler.jpg","https://www.netscaler.com/pricing","https://www.g2.com/products/netscaler/reviews",79,4.4,8.83544,"Load Balancing","402654c0-5db8-41d7-946c-19ef1e6c2b6e",2006-07-07,2025-06-25,"acb19eee-e37a-4a8e-a9d9-51ce9d52c79e",Hosting,"acb19eee-e37a-4a8e-a9d9-51ce9d52c79e",Hosting,3643
"0004852E0D8015BED11330B2973FA20C","FF5C054C7CD6924C570F944007CCF076","Microsoft Corporation",microsoft.com,"Computer related services",Redmond,Washington,98052,"United States",,"$1+ Billion","XLarge (5001+ Employees)",mcafee.com,McAfee,"3e92a895-1f52-43a5-9d52-1851745d0b5e","7b043cbf0171423698701c6dc93edeed","McAfee Email Gateway","McAfee Email Gateway","https://logo.clearbit.com/mcafee.com",mcafee.com,mcafee.com,1922,3.2165797,3.8644986,Email,"8451f4c3-4e2e-4a1c-8de7-7b65013f7ac1",2011-07-04,2012-05-06,"d8b66846-bba6-46a0-9791-dd6a5dceb6a8","Collaboration & Productivity","d8b66846-bba6-46a0-9791-dd6a5dceb6a8","Collaboration & Productivity",448
"0006BBE87D36120F15ACE09178B75D4D","FF5C054C7CD6924C570F944007CCF076","Microsoft Corporation",microsoft.com,"Computer related services",Redmond,Washington,98052,"United States",,"$1+ Billion","XLarge (5001+ Employees)",motivatedmodels.com,"Motivated Models","9bb762f5-7a31-40d9-8dfb-7bf4a0852903","c9a06919-aae4-4883-a77e-3a3215a3a7fe","Motivated Models","Motivated Models","https://images.g2crowd.com/uploads/product/image/d5c5751df56447525c204b108ce46c22/motivated-models.jpg","https://motivatedmodels.com/","https://www.g2.com/products/motivated-models/reviews",0,0.0,0.0,"Staffing .....JSONL is great for streaming pipelines and incremental ingestion.
Prefer multiple pages over very large
sizevalues; this reduces timeouts and avoids 429 errors.
Tips & best practices
- Choose CSV for bulk analytics, Paged JSON for interactive AND streaming apis or agent apps.
- Choose mainCategory or mainCategoryId filters to filter only products you need.
- Use Parent Categories to retrieve all products in the hierarchy. E.g. Sales Tools , Marketing Automation etc. Please refer G2 category hierarchies here: https://www.g2.com/categories?view_hierarchy=true
- Reuse
productIdandcategoryIdacross search and metrics endpoints. - Handle 401/429/5xx with retries (see Errors & Rate Limits).
- For exports, always pass
X-On-Behalf-Of-Userand store files with timestamps/versioning.
Errors
| Code | Meaning | How to fix |
|---|---|---|
| 400 | Bad request | Validate path/query/body; check page/size are integers (when used). |
| 401 | Unauthorized | Provide/refresh Bearer token. |
| 403 | Forbidden | Check permissions; for CSV include X-On-Behalf-Of-User. |
| 404 | Not found | Unknown companyDomain or no products present. |
| 429 | Rate limit exceeded | Retry with exponential backoff; respect Retry-After. |
| 500 | Internal server error | Retry later; contact support if persistent. |