curl --request POST \
--url https://app.pipecorn.com/api/v2/intents/accounts/stack \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"webhook_url": "https://your-company.com/webhooks/stack",
"stacks": [
"shopify",
"webflow"
],
"stack_match": "or",
"excluded_stacks": [
"wordpress"
],
"countries": [
"US",
"FR"
],
"included_industries": [
"2190",
"34"
],
"excluded_industries": [
"27"
],
"company_size": [
"11-50",
"51-200"
],
"limit": 200,
"streaming": false,
"name": "Shopify prospects"
}
'import requests
url = "https://app.pipecorn.com/api/v2/intents/accounts/stack"
payload = {
"webhook_url": "https://your-company.com/webhooks/stack",
"stacks": ["shopify", "webflow"],
"stack_match": "or",
"excluded_stacks": ["wordpress"],
"countries": ["US", "FR"],
"included_industries": ["2190", "34"],
"excluded_industries": ["27"],
"company_size": ["11-50", "51-200"],
"limit": 200,
"streaming": False,
"name": "Shopify prospects"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
webhook_url: 'https://your-company.com/webhooks/stack',
stacks: ['shopify', 'webflow'],
stack_match: 'or',
excluded_stacks: ['wordpress'],
countries: ['US', 'FR'],
included_industries: ['2190', '34'],
excluded_industries: ['27'],
company_size: ['11-50', '51-200'],
limit: 200,
streaming: false,
name: 'Shopify prospects'
})
};
fetch('https://app.pipecorn.com/api/v2/intents/accounts/stack', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.pipecorn.com/api/v2/intents/accounts/stack",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'webhook_url' => 'https://your-company.com/webhooks/stack',
'stacks' => [
'shopify',
'webflow'
],
'stack_match' => 'or',
'excluded_stacks' => [
'wordpress'
],
'countries' => [
'US',
'FR'
],
'included_industries' => [
'2190',
'34'
],
'excluded_industries' => [
'27'
],
'company_size' => [
'11-50',
'51-200'
],
'limit' => 200,
'streaming' => false,
'name' => 'Shopify prospects'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.pipecorn.com/api/v2/intents/accounts/stack"
payload := strings.NewReader("{\n \"webhook_url\": \"https://your-company.com/webhooks/stack\",\n \"stacks\": [\n \"shopify\",\n \"webflow\"\n ],\n \"stack_match\": \"or\",\n \"excluded_stacks\": [\n \"wordpress\"\n ],\n \"countries\": [\n \"US\",\n \"FR\"\n ],\n \"included_industries\": [\n \"2190\",\n \"34\"\n ],\n \"excluded_industries\": [\n \"27\"\n ],\n \"company_size\": [\n \"11-50\",\n \"51-200\"\n ],\n \"limit\": 200,\n \"streaming\": false,\n \"name\": \"Shopify prospects\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.pipecorn.com/api/v2/intents/accounts/stack")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"webhook_url\": \"https://your-company.com/webhooks/stack\",\n \"stacks\": [\n \"shopify\",\n \"webflow\"\n ],\n \"stack_match\": \"or\",\n \"excluded_stacks\": [\n \"wordpress\"\n ],\n \"countries\": [\n \"US\",\n \"FR\"\n ],\n \"included_industries\": [\n \"2190\",\n \"34\"\n ],\n \"excluded_industries\": [\n \"27\"\n ],\n \"company_size\": [\n \"11-50\",\n \"51-200\"\n ],\n \"limit\": 200,\n \"streaming\": false,\n \"name\": \"Shopify prospects\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.pipecorn.com/api/v2/intents/accounts/stack")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"webhook_url\": \"https://your-company.com/webhooks/stack\",\n \"stacks\": [\n \"shopify\",\n \"webflow\"\n ],\n \"stack_match\": \"or\",\n \"excluded_stacks\": [\n \"wordpress\"\n ],\n \"countries\": [\n \"US\",\n \"FR\"\n ],\n \"included_industries\": [\n \"2190\",\n \"34\"\n ],\n \"excluded_industries\": [\n \"27\"\n ],\n \"company_size\": [\n \"11-50\",\n \"51-200\"\n ],\n \"limit\": 200,\n \"streaming\": false,\n \"name\": \"Shopify prospects\"\n}"
response = http.request(request)
puts response.read_body{
"total_count": 0,
"total_available": 0,
"message": "No results found"
}{
"message": {
"total_count": 200,
"total_available": 428,
"message": "Stack intent search started successfully. You will receive the results on your webhook shortly.",
"id": "b3f1c2d4-0000-0000-0000-000000000000"
}
}{
"error": 123,
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}{
"error": "Not enough enrichment credits. You need 30 credits but only have 5 available.",
"code": "insufficient_credits",
"top_up_url": "https://app.pipecorn.com/settings/subscriptions/credits"
}{
"error": "You have reached your weekly enrichment credit limit for this workspace",
"code": "workspace_limit_exceeded"
}{
"error": 123,
"message": "<string>"
}Find companies by tech stack
Import companies using a given technology stack to your webhook
curl --request POST \
--url https://app.pipecorn.com/api/v2/intents/accounts/stack \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"webhook_url": "https://your-company.com/webhooks/stack",
"stacks": [
"shopify",
"webflow"
],
"stack_match": "or",
"excluded_stacks": [
"wordpress"
],
"countries": [
"US",
"FR"
],
"included_industries": [
"2190",
"34"
],
"excluded_industries": [
"27"
],
"company_size": [
"11-50",
"51-200"
],
"limit": 200,
"streaming": false,
"name": "Shopify prospects"
}
'import requests
url = "https://app.pipecorn.com/api/v2/intents/accounts/stack"
payload = {
"webhook_url": "https://your-company.com/webhooks/stack",
"stacks": ["shopify", "webflow"],
"stack_match": "or",
"excluded_stacks": ["wordpress"],
"countries": ["US", "FR"],
"included_industries": ["2190", "34"],
"excluded_industries": ["27"],
"company_size": ["11-50", "51-200"],
"limit": 200,
"streaming": False,
"name": "Shopify prospects"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
webhook_url: 'https://your-company.com/webhooks/stack',
stacks: ['shopify', 'webflow'],
stack_match: 'or',
excluded_stacks: ['wordpress'],
countries: ['US', 'FR'],
included_industries: ['2190', '34'],
excluded_industries: ['27'],
company_size: ['11-50', '51-200'],
limit: 200,
streaming: false,
name: 'Shopify prospects'
})
};
fetch('https://app.pipecorn.com/api/v2/intents/accounts/stack', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.pipecorn.com/api/v2/intents/accounts/stack",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'webhook_url' => 'https://your-company.com/webhooks/stack',
'stacks' => [
'shopify',
'webflow'
],
'stack_match' => 'or',
'excluded_stacks' => [
'wordpress'
],
'countries' => [
'US',
'FR'
],
'included_industries' => [
'2190',
'34'
],
'excluded_industries' => [
'27'
],
'company_size' => [
'11-50',
'51-200'
],
'limit' => 200,
'streaming' => false,
'name' => 'Shopify prospects'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.pipecorn.com/api/v2/intents/accounts/stack"
payload := strings.NewReader("{\n \"webhook_url\": \"https://your-company.com/webhooks/stack\",\n \"stacks\": [\n \"shopify\",\n \"webflow\"\n ],\n \"stack_match\": \"or\",\n \"excluded_stacks\": [\n \"wordpress\"\n ],\n \"countries\": [\n \"US\",\n \"FR\"\n ],\n \"included_industries\": [\n \"2190\",\n \"34\"\n ],\n \"excluded_industries\": [\n \"27\"\n ],\n \"company_size\": [\n \"11-50\",\n \"51-200\"\n ],\n \"limit\": 200,\n \"streaming\": false,\n \"name\": \"Shopify prospects\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.pipecorn.com/api/v2/intents/accounts/stack")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"webhook_url\": \"https://your-company.com/webhooks/stack\",\n \"stacks\": [\n \"shopify\",\n \"webflow\"\n ],\n \"stack_match\": \"or\",\n \"excluded_stacks\": [\n \"wordpress\"\n ],\n \"countries\": [\n \"US\",\n \"FR\"\n ],\n \"included_industries\": [\n \"2190\",\n \"34\"\n ],\n \"excluded_industries\": [\n \"27\"\n ],\n \"company_size\": [\n \"11-50\",\n \"51-200\"\n ],\n \"limit\": 200,\n \"streaming\": false,\n \"name\": \"Shopify prospects\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.pipecorn.com/api/v2/intents/accounts/stack")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"webhook_url\": \"https://your-company.com/webhooks/stack\",\n \"stacks\": [\n \"shopify\",\n \"webflow\"\n ],\n \"stack_match\": \"or\",\n \"excluded_stacks\": [\n \"wordpress\"\n ],\n \"countries\": [\n \"US\",\n \"FR\"\n ],\n \"included_industries\": [\n \"2190\",\n \"34\"\n ],\n \"excluded_industries\": [\n \"27\"\n ],\n \"company_size\": [\n \"11-50\",\n \"51-200\"\n ],\n \"limit\": 200,\n \"streaming\": false,\n \"name\": \"Shopify prospects\"\n}"
response = http.request(request)
puts response.read_body{
"total_count": 0,
"total_available": 0,
"message": "No results found"
}{
"message": {
"total_count": 200,
"total_available": 428,
"message": "Stack intent search started successfully. You will receive the results on your webhook shortly.",
"id": "b3f1c2d4-0000-0000-0000-000000000000"
}
}{
"error": 123,
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}{
"error": "Not enough enrichment credits. You need 30 credits but only have 5 available.",
"code": "insufficient_credits",
"top_up_url": "https://app.pipecorn.com/settings/subscriptions/credits"
}{
"error": "You have reached your weekly enrichment credit limit for this workspace",
"code": "workspace_limit_exceeded"
}{
"error": 123,
"message": "<string>"
}Credits and rate limits
- Credits: 3 enrichment credits per imported company
- Authentication: standard v2 scheme (
X-API-KEY)
402 with code: "insufficient_credits",
a top_up_url, and a message reporting the shortfall — and no import is
created. A workspace weekly credit limit returns 403 with
code: "workspace_limit_exceeded" instead. See
Credit and limit errors.
Filters
Accepts the same filters as preview (stacks, stack_match, excluded_stacks, countries,
included_industries, excluded_industries, company_size), plus:
webhook_url(required) — where results are POSTedlimit— caps how many companies are imported (and billed). Defaults to 1000, which is also the hard ceiling.streaming— whentrue, companies are POSTed one at a time instead of in a single payloadname— optional import name
Example request
{
"stacks": ["shopify"],
"stack_match": "and",
"countries": ["US"],
"limit": 200,
"webhook_url": "https://your-company.com/webhooks/stack"
}
Example response
{
"message": {
"total_count": 200,
"total_available": 428,
"message": "Stack intent search started successfully. You will receive the results on your webhook shortly.",
"id": "b3f1c2d4-0000-0000-0000-000000000000"
}
}
total_availableis the full match count;total_countis what will be imported (capped bylimit, then the 1000 ceiling).- When nothing matches, the response is
200with{ "total_count": 0, ... }and no import is created.
Webhook payload
Companies are delivered to yourwebhook_url using the same field names as the
other company imports: name, description, website, logo, industry,
location, linkedin_id, linkedin_url, employee_count, employee_range.
Blank fields are omitted.Authorizations
Body
URL that receives the imported company records.
"https://your-company.com/webhooks/stack"
Technology slugs to match. Resolve names to slugs with GET /accounts/technologies.
["shopify", "webflow"]
How stacks combine. or matches companies using any listed technology; and requires all of them.
or, and "or"
Technology slugs to exclude.
["wordpress"]
ISO country codes, OR-matched against the company's country.
["US", "FR"]
LinkedIn industry IDs to include, OR-matched.
["2190", "34"]
LinkedIn industry IDs to exclude.
["27"]
Company size display buckets to include.
Self-employed, 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+ ["11-50", "51-200"]
Caps how many companies are imported (and billed). Defaults to 1000, which is also the hard ceiling.
1 <= x <= 1000200
When true, companies are POSTed to the webhook one at a time instead of in a single payload.
false
Optional import name.
"Shopify prospects"
Was this page helpful?