Capability · customer.evidence
Customer Proof: Which named customer stories does this vendor publish?
Question & workflow
- Question
- Which named customer stories does this vendor publish?
- What comes back
- Named customer stories linked from the vendor's official website.
- Use case
- Find case-study evidence for vendor qualification and account research.
Ideal workflow
- Supply one company website (company_website).
- Inspect the Actor for free (metadata, pricing, schemas) — no run, no token.
- Get spending authorization for one call capped at $0.02 (maxTotalChargeUsd: 0.02).
- Start one run in your own Apify account; save the run ID.
- Poll that same run, then read the one-item dataset or the OUTPUT record.
- Validate the report against report.schema.json and act on status before using findings.
Input
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
| company_website | string | Required | required, string, max 2048 chars | One public, official company domain or HTTPS URL. The Actor follows same-company customer stories only. |
| max_customers | integer | Optional | optional, integer 1–6, default 5 | Return at most this many verified story rows. Unverifiable links do not consume this limit; all checks remain within the request and time budget. The result is not exhaustive. |
{
"company_website": "https://linear.app/"
}
Download input_schema.json — the verbatim Actor input schema. Run limits (build, memory, timeout, maxTotalChargeUsd) are call options, never input fields.
Output
One report per run, written to the run’s default dataset (one item) and to the OUTPUT record of its key-value store. Check status before using any findings.
17 top-level fields, read from report.schema.json (JSON Schema draft-07). The schema also contains conditional rules (allOf) that tie fields to the status; see the file.
| Field | Type | Required | Constraints |
|---|---|---|---|
| schema_version | const "1.0" | Required | — |
| report_id | string | Required | pattern ^[a-f0-9]{64}$ |
| company_website | string | null | Required | format uri |
| checked_at | string | Required | format date-time |
| completed_at | string | Required | format date-time |
| status | enum | Required | one of: verified_customer_proof, unknown, invalid_input |
| message | string | Required | — |
| customer_count | integer | Required | 0–6 |
| customers | array of any | Required | — |
| sources | array of any | Required | — |
| coverage_complete | const false | Required | — |
| source_errors | array of any | Required | — |
| http_request_count | integer | Required | 0–12 |
| downloaded_bytes | integer | Required | ≥ 0 |
| duration_ms | integer | Required | ≥ 0 |
| billing_event | string | null | Required | — |
| billing_quantity | integer | Required | 0–1 |
- report.schema.json — verbatim report schema
- input_schema.json — verbatim input schema
- customer-proof.json — full recorded example report with provenance
- customer-proof.md — public Markdown doc for agents
Recorded example
Recorded example — observed 2026-10-08 11:46 UTC · owner-funded release test · not an independent purchase
This explorer shows only the recorded report below. It does not accept a domain and does not check anything; a new check happens only when you run the Actor in your own Apify account.
Customer Proof report — Linear
status: verified_customer_proof (Verified)- Subject
- Linear
- Observed
- Run ID
- 6ug7OjCIYmqvfcBJd
- Build
- 0.2.3 (build ID 86QhzglURVH0hO6j5)
- Report SHA-256
- 31275a16f95c4574f6fcd9cded0d11dacb8efcec3d89e915afd35b83c419f403
- company_website
- https://linear.app/
- customer_count
- 5
- coverage_complete
- false
- message
- Named customers confirmed on linked first-party story pages. This is not an exhaustive customer list.
Customers (5)
| customer_name | story_title | Evidence |
|---|---|---|
| Ramp | The coding agent behind 75% of Ramp’s merged PRs | |
|
Evidence — row 1 customers
|
||
| OpenAI | Why OpenAI chose Linear and scaled to 3,000 users | |
|
Evidence — row 2 customers
|
||
| Coinbase | Coinbase’s bet on agent-first development | |
|
Evidence — row 3 customers
|
||
| Oscar | How teams at Oscar left one of the world’s most complex Jira instances | |
|
Evidence — row 4 customers
|
||
| Boom Supersonic | Boom Supersonic builds as fast as it flies | |
|
Evidence — row 5 customers
|
||
Sources checked (7)
From sources in the report. A source listed here was fetched during the recorded run; the report covers these sources only, not the whole web.
- https://linear.app/
- https://linear.app/customers
- https://linear.app/customers/ramp
- https://linear.app/customers/openai
- https://linear.app/customers/coinbase
- https://linear.app/customers/oscar
- https://linear.app/customers/boom
Reports may precede final event charging; their billing fields alone do not establish a settled debit.
Show the full raw report JSON
{
"schema_version": "1.0",
"report_id": "5e04d6e6062feb60ff1734ec0d998d0072bb151601d3d5c39a05517fa9b86480",
"company_website": "https://linear.app/",
"checked_at": "2026-10-08T11:46:34.067Z",
"completed_at": "2026-10-08T11:46:35.530Z",
"status": "verified_customer_proof",
"message": "Named customers confirmed on linked first-party story pages. This is not an exhaustive customer list.",
"customer_count": 5,
"customers": [
{
"customer_name": "Ramp",
"story_title": "The coding agent behind 75% of Ramp’s merged PRs",
"source_url": "https://linear.app/customers/ramp",
"name_evidence_field": "h1",
"checked_at": "2026-10-08T11:46:34.804Z",
"evidence_sha256": "1d58b8cd02241052e79bd2984ab54bcabbb2a500b5618dd64bfd9e5293a0a186"
},
{
"customer_name": "OpenAI",
"story_title": "Why OpenAI chose Linear and scaled to 3,000 users",
"source_url": "https://linear.app/customers/openai",
"name_evidence_field": "h1",
"checked_at": "2026-10-08T11:46:34.948Z",
"evidence_sha256": "3ee429ffa68c1145ff25906b1fba667e3e4a923f75b96b2a621fd6145de85260"
},
{
"customer_name": "Coinbase",
"story_title": "Coinbase’s bet on agent-first development",
"source_url": "https://linear.app/customers/coinbase",
"name_evidence_field": "h1",
"checked_at": "2026-10-08T11:46:35.113Z",
"evidence_sha256": "37abe4473c24a8b74fd8920851136e88abdc560009607f2630034b4269be4efb"
},
{
"customer_name": "Oscar",
"story_title": "How teams at Oscar left one of the world’s most complex Jira instances",
"source_url": "https://linear.app/customers/oscar",
"name_evidence_field": "h1",
"checked_at": "2026-10-08T11:46:35.264Z",
"evidence_sha256": "ac1506a15f71635f9472531a375c73ca8785ee1a94ca5d7f51eb7174b974f8e2"
},
{
"customer_name": "Boom Supersonic",
"story_title": "Boom Supersonic builds as fast as it flies",
"source_url": "https://linear.app/customers/boom",
"name_evidence_field": "h1",
"checked_at": "2026-10-08T11:46:35.400Z",
"evidence_sha256": "3aad4576f6ee2d625426757920e8fb911897f43bd32eaff63e90c22dbd5ef0b3"
}
],
"sources": [
{
"url": "https://linear.app/",
"discovered_from": null,
"source_type": "company_homepage",
"checked_at": "2026-10-08T11:46:34.172Z",
"evidence_sha256": "271df22e3adb63b26f1634e0f7c6745fa35a5861da75429ed8aee94738d24ba5"
},
{
"url": "https://linear.app/customers",
"discovered_from": "https://linear.app/",
"source_type": "customer_stories_index",
"checked_at": "2026-10-08T11:46:34.630Z",
"evidence_sha256": "1fb9897347b9505c6da8bfd394fb2a823bbeb480a192a48e92c4b23a21110cca"
},
{
"url": "https://linear.app/customers/ramp",
"discovered_from": "https://linear.app/customers",
"source_type": "customer_story",
"checked_at": "2026-10-08T11:46:34.804Z",
"evidence_sha256": "1d58b8cd02241052e79bd2984ab54bcabbb2a500b5618dd64bfd9e5293a0a186"
},
{
"url": "https://linear.app/customers/openai",
"discovered_from": "https://linear.app/customers",
"source_type": "customer_story",
"checked_at": "2026-10-08T11:46:34.948Z",
"evidence_sha256": "3ee429ffa68c1145ff25906b1fba667e3e4a923f75b96b2a621fd6145de85260"
},
{
"url": "https://linear.app/customers/coinbase",
"discovered_from": "https://linear.app/customers",
"source_type": "customer_story",
"checked_at": "2026-10-08T11:46:35.113Z",
"evidence_sha256": "37abe4473c24a8b74fd8920851136e88abdc560009607f2630034b4269be4efb"
},
{
"url": "https://linear.app/customers/oscar",
"discovered_from": "https://linear.app/customers",
"source_type": "customer_story",
"checked_at": "2026-10-08T11:46:35.264Z",
"evidence_sha256": "ac1506a15f71635f9472531a375c73ca8785ee1a94ca5d7f51eb7174b974f8e2"
},
{
"url": "https://linear.app/customers/boom",
"discovered_from": "https://linear.app/customers",
"source_type": "customer_story",
"checked_at": "2026-10-08T11:46:35.400Z",
"evidence_sha256": "3aad4576f6ee2d625426757920e8fb911897f43bd32eaff63e90c22dbd5ef0b3"
}
],
"coverage_complete": false,
"source_errors": [],
"http_request_count": 8,
"downloaded_bytes": 4288400,
"duration_ms": 1464,
"billing_event": null,
"billing_quantity": 0
}
Download customer-proof.json — this report plus provenance (input used, run, build, owner-funded flag).
Other recorded examples: Hiring Signals · Contact & Booking · SaaS Pricing · Retail Availability · Partner Programs · Integration Evidence
Evidence & limits
- Verification scope
- Named customers and stories verified on vendor-linked first-party case-study pages.
- Coverage limits
- These are vendor-published claims, not independent endorsements or proof the relationship is current. Generic logo walls alone are insufficient.
- Request bounds
- 12 requests, 10 MB total, 3 MB per page, 45-second network budget.
How sources are acquired, dated, hashed and verified — and the four evidence classes (local fixtures, owner-funded cloud tests, read-only metadata checks, independent customer results) — are on Evidence & methodology.
Actor & build
- Actor
- impressionable_lupine/verified-customer-proof
- Actor ID
- kRk9vTOnhmGMMrMCg
- Default build
- 0.2.3
- Pricing model
- PAY_PER_EVENT · event verified-customer-report · $0.02 · max 1 event per run
- Platform usage
- Standard Actor platform usage included under the configuration checked on 8 Oct 2026; recheck before purchase.
- Apify Store
- apify.com/impressionable_lupine/verified-customer-proof
Inspect without purchase
Both of these read public metadata only. They do not start a run and need no token.
{
"name": "fetch-actor-details",
"arguments": {
"actor": "impressionable_lupine/verified-customer-proof",
"output": {
"pricing": true,
"inputSchema": true,
"outputSchema": true,
"metadata": true,
"readme": true
}
}
}
# Free, read-only: public Actor metadata (pricing, builds). Does not start a run.
curl "https://api.apify.com/v2/acts/kRk9vTOnhmGMMrMCg"
Price & charge trigger
- Event
- Verified customer proof report (verified-customer-report)
- Charge trigger
- One event for a positive report, which may be a partial list.
- No event when
- unknown and invalid_input produce no event.
- Example cost
- One call with
maxTotalChargeUsd: 0.02→ at most $0.02 in Actor events. - Platform usage
- Standard Actor platform usage included under the configuration checked on 8 Oct 2026; recheck before purchase.
- Store text
- “One source-checked report with public customer evidence. Unknown or invalid results are free.” (verbatim, Apify Store)
Caps are not discounts and do not guarantee a positive result. Unknown/invalid checks produce no eligible report event; caller model/workflow costs are separate.
Example cost: one call, max $0.02 in Actor events. Caller model and workflow costs (your agent, your LLM) are separate and not included. Reports may precede final event charging; their billing fields alone do not establish a settled debit.
Unknown & partial
Statuses are part of the answer. An unknown result is not a negative, and a scoped negative covers only the checked sources. unknown and invalid_input produce no event.
| Status | Meaning | Report event |
|---|---|---|
| verified_customer_proof | Named customers and stories verified on vendor-linked first-party pages. May be a partial list. | Yes — one event |
| unknown | No named customer story could be verified in the checked sources. | No event |
| invalid_input | Fix the caller input. | No event |
When to choose
- Choose it when
- Find case-study evidence for vendor qualification and account research.
- Simpler alternative
- If you only need a vendor’s customers page URL, open it directly. Choose this for dated named-story rows with per-row evidence.
Do not choose it for
- Independent endorsement verification
- Proving an ongoing customer relationship
- Treating unlinked logo walls as verified case studies
No discovery of companies, people identity/deliverability verification, proof of buying intent, outreach, top-ups, subscriptions or recurring purchases. Which capability fits my task?
Start with one company
-
1 · Inspect (free, no token, no run) # Free, read-only: public Actor metadata (pricing, builds). Does not start a run. curl "https://api.apify.com/v2/acts/kRk9vTOnhmGMMrMCg" -
2 · Start one run — only after spending is authorized # Paid run in YOUR Apify account. Only after spending is authorized. # Set APIFY_TOKEN securely in your client/shell; never paste it into URLs or shared files. curl -X POST "https://api.apify.com/v2/acts/kRk9vTOnhmGMMrMCg/runs?build=0.2.3&memory=512&timeout=60&maxTotalChargeUsd=0.02&waitForFinish=30" \ -H "Authorization: Bearer $APIFY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"company_website":"https://linear.app/"}'Limits are query parameters: build 0.2.3, memory 512 MB, timeout 60 s, maxTotalChargeUsd=0.02.
-
3 · Poll the same run # Save data.id (run ID) from the first response. On timeout/ambiguity, poll THIS run. # Never start a second charged run to recover output. curl "https://api.apify.com/v2/actor-runs/$RUN_ID" \ -H "Authorization: Bearer $APIFY_TOKEN" -
4 · Get the report (dataset items) # data.defaultDatasetId from the run object (one report item). curl "https://api.apify.com/v2/datasets/$DATASET_ID/items?format=json&clean=true" \ -H "Authorization: Bearer $APIFY_TOKEN"4b · Or the OUTPUT record # Alternative: data.defaultKeyValueStoreId → OUTPUT record. curl "https://api.apify.com/v2/key-value-stores/$KV_STORE_ID/records/OUTPUT" \ -H "Authorization: Bearer $APIFY_TOKEN"
Recovery: Save the run ID from the first response; on timeout or ambiguous response, poll that same run; never start a second charged run to recover output.
Hosted MCP server https://mcp.apify.com. Anonymous (no token) inspection is allowed only when ?tools= is limited to search-actors, fetch-actor-details, search-apify-docs and fetch-apify-docs.
No live MCP execution of these call-actor templates has been performed by anyone, owner or independent; they were validated offline against the tool schemas and current metadata, and the recorded examples came from Apify SDK/API runs.
-
1 · Inspect: fetch-actor-details (free; works on the anonymous inspection endpoint) { "name": "fetch-actor-details", "arguments": { "actor": "impressionable_lupine/verified-customer-proof", "output": { "pricing": true, "inputSchema": true, "outputSchema": true, "metadata": true, "readme": true } } }Client config for anonymous inspection
Inspection only (no token) { "mcpServers": { "apify-inspect": { "url": "https://mcp.apify.com?tools=search-actors,fetch-actor-details" } } } -
2 · call-actor — only after spending is authorized (limits in callOptions, never in input) { "name": "call-actor", "arguments": { "actor": "impressionable_lupine/verified-customer-proof", "input": { "company_website": "https://linear.app/" }, "waitSecs": 30, "callOptions": { "build": "0.2.3", "memory": 512, "timeout": 60, "maxTotalChargeUsd": 0.02 } } }Client config for execution (your own authentication)
OAuth (recommended; browser sign-in, no token in config) { "mcpServers": { "apify": { "url": "https://mcp.apify.com?tools=actors,runs,storage" } } }Bearer header (set the token securely in your client) { "mcpServers": { "apify": { "url": "https://mcp.apify.com?tools=actors,runs,storage", "headers": { "Authorization": "Bearer <APIFY_TOKEN>" } } } } -
3 · Poll the same run { "name": "get-actor-run", "arguments": { "runId": "<runId returned by call-actor>" } } -
4 · Get the report (dataset items) { "name": "get-dataset-items", "arguments": { "datasetId": "<datasetId returned by call-actor>", "clean": true } }4b · Or the OUTPUT record { "name": "get-key-value-store-record", "arguments": { "keyValueStoreId": "<keyValueStoreId returned by call-actor>", "recordKey": "OUTPUT" } }
Recovery: Save the run ID from the first response; on timeout or ambiguous response, poll that same run; never start a second charged run to recover output. call-actor returns the run status and storage IDs (the IDs are under storages in call-actor’s structured result), not the items.
Last verification
Last metadata verification: 8 Oct 2026 ().
A read-only, anonymous GET https://api.apify.com/v2/acts/kRk9vTOnhmGMMrMCg confirmed the public Actor, its default build 0.2.3 and its pay-per-event pricing (verified-customer-report, $0.02). That check started no run and is not continuous monitoring. Last checked 2026-10-08T12:16:53.713706+00:00; recheck the Apify Store page before purchase.