# Public Case Study Lead Finder (`k0nkupa/public-case-study-lead-finder`) Actor

Finds public customer stories and case studies and extracts buyer, vendor, industry, use case, and stack signals for sales prospecting and market maps.

- **URL**: https://apify.com/k0nkupa/public-case-study-lead-finder.md
- **Developed by:** [Tony Le](https://apify.com/k0nkupa) (community)
- **Categories:** Lead generation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 case study leads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Public Case Study Lead Finder

Discover named B2B customers from public vendor case studies. Extract the vendor, customer, industry, use case, explicitly mentioned technology, supporting evidence, and source URL for sales prospecting and market mapping.

### Use cases

- Build account lists from vendors' published customer evidence.
- Map which industries and use cases adopt a product category.
- Find technology and migration signals for relevant outreach.

### Inputs

- `sourceUrls`: Exact public index or story URLs. Explicit values replace defaults.
- `vendors`: Vendor domains or URLs used to probe `/customers`, `/case-studies`, and `/customer-stories`.
- `industries`: Optional case-insensitive filter. Leave empty to keep all evidenced industries.
- `useDefaultSources`: Use curated sources only when explicit source inputs are empty.
- `maxItems`: Maximum evidence-backed results, from 1 to 1000.
- `firecrawlApiKey`: Optional secret bring-your-own-key credential for fallback scraping.
- `maxFirecrawlPages`: Maximum attempted Firecrawl fallback pages per run, from 0 to 100.

### Default sources

- Stripe customers: https://stripe.com/customers
- Cloudflare case studies: https://www.cloudflare.com/case-studies/
- HubSpot case studies: https://www.hubspot.com/case-studies/directory?showAll=true

### Optional Firecrawl fallback

Direct HTTP is always attempted first. A user-provided Firecrawl key is used only for blocked or sparse pages, up to `maxFirecrawlPages`. Firecrawl credits and billing belong to the key owner. This Actor does not use Firecrawl Agent, Extract, Search, or enhanced proxy mode.

### Output

- `recordType`: Always `caseStudy`.
- `sourceUrl`: Normalized public story URL.
- `vendor`: Vendor publishing the story.
- `customerName`: Named customer evidenced on the page.
- `industry`, `useCase`, and `technologyMention`: Explicit evidence or `null`.
- `confidence`: Evidence-completeness score from 0 to 1.
- `evidenceText`: Sanitized supporting text.
- `capturedAt`: ISO-8601 run timestamp.

The Actor never fabricates missing optional fields.

### Example input

```json
{
  "sourceUrls": ["https://stripe.com/customers"],
  "industries": ["software", "retail"],
  "maxItems": 100
}
````

### Pricing

Pay per result: $0.003 for each emitted case-study lead, subject to the Store's displayed minimum run charge.

### Limitations and safety

The Actor follows public same-host story links one level deep. It does not authenticate, find personal contact data, use an LLM, or invent missing industries, use cases, or technologies. Source websites can change and may require custom URLs or the optional fallback.

### Local validation

```bash
npm ci
npm test
npx --yes apify-cli validate-schema
npx --yes apify-cli run --purge --input '{"maxItems":10}'
```

# Actor input Schema

## `sourceUrls` (type: `array`):

Public customer, case-study, or customer-story index and detail URLs. Explicit sources replace the curated defaults.

## `vendors` (type: `array`):

Vendor domains or URLs. The Actor probes /customers, /case-studies, and /customer-stories on each host.

## `industries` (type: `array`):

Optional case-insensitive industry names. Leave empty to keep every evidenced industry.

## `useDefaultSources` (type: `boolean`):

Use the Stripe, Cloudflare, and HubSpot customer-story indexes when no explicit source or vendor is supplied.

## `maxItems` (type: `integer`):

Maximum number of evidence-backed case-study rows.

## `firecrawlApiKey` (type: `string`):

Optional bring-your-own Firecrawl key used only when direct HTTP is blocked or sparse.

## `maxFirecrawlPages` (type: `integer`):

Maximum attempted Firecrawl fallback pages per run. Ignored without a Firecrawl API key.

## Actor input object example

```json
{
  "sourceUrls": [],
  "vendors": [],
  "industries": [],
  "useDefaultSources": true,
  "maxItems": 100,
  "maxFirecrawlPages": 20
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("k0nkupa/public-case-study-lead-finder").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("k0nkupa/public-case-study-lead-finder").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call k0nkupa/public-case-study-lead-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=k0nkupa/public-case-study-lead-finder",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Public Case Study Lead Finder",
        "description": "Finds public customer stories and case studies and extracts buyer, vendor, industry, use case, and stack signals for sales prospecting and market maps.",
        "version": "0.1",
        "x-build-id": "r2lEKwcA7ZF5Na8ex"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/k0nkupa~public-case-study-lead-finder/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-k0nkupa-public-case-study-lead-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/k0nkupa~public-case-study-lead-finder/runs": {
            "post": {
                "operationId": "runs-sync-k0nkupa-public-case-study-lead-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/k0nkupa~public-case-study-lead-finder/run-sync": {
            "post": {
                "operationId": "run-sync-k0nkupa-public-case-study-lead-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "sourceUrls": {
                        "title": "Source URLs",
                        "type": "array",
                        "description": "Public customer, case-study, or customer-story index and detail URLs. Explicit sources replace the curated defaults.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "vendors": {
                        "title": "Vendor domains",
                        "type": "array",
                        "description": "Vendor domains or URLs. The Actor probes /customers, /case-studies, and /customer-stories on each host.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "industries": {
                        "title": "Industry filter",
                        "type": "array",
                        "description": "Optional case-insensitive industry names. Leave empty to keep every evidenced industry.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "useDefaultSources": {
                        "title": "Use curated default sources",
                        "type": "boolean",
                        "description": "Use the Stripe, Cloudflare, and HubSpot customer-story indexes when no explicit source or vendor is supplied.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of evidence-backed case-study rows.",
                        "default": 100
                    },
                    "firecrawlApiKey": {
                        "title": "Firecrawl API key",
                        "type": "string",
                        "description": "Optional bring-your-own Firecrawl key used only when direct HTTP is blocked or sparse."
                    },
                    "maxFirecrawlPages": {
                        "title": "Maximum Firecrawl fallback pages",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum attempted Firecrawl fallback pages per run. Ignored without a Firecrawl API key.",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
