Capability · pricing.check

SaaS Pricing: What plans and prices appear on official pricing pages?

$0.02 per eligible report max 1 event per run input: company website build 0.2.3

Question & workflow

Question
What plans and prices appear on official pricing pages?
What comes back
Observed plan names and displayed prices with source and coverage.
Use case
Source-backed pricing snapshots for competitive research and change comparisons.

Ideal workflow

  1. Supply one company website (company_website).
  2. Inspect the Actor for free (metadata, pricing, schemas) — no run, no token.
  3. Get spending authorization for one call capped at $0.02 (maxTotalChargeUsd: 0.02).
  4. Start one run in your own Apify account; save the run ID.
  5. Poll that same run, then read the one-item dataset or the OUTPUT record.
  6. Validate the report against report.schema.json and act on status before using findings.

Input

SaaS Pricing input fields. Descriptions are verbatim from the Actor’s published input schema (input_schema.json).
Field Type Required Constraints Description
company_website string Required required, string Public SaaS company domain or HTTPS URL, for example linear.app.
pricing_url string Optional optional, string Public pricing page on the same registrable company domain. If omitted, the Actor follows a pricing link on the homepage or tries /pricing.
Minimal valid input (the input used for the recorded example)
{
  "company_website": "https://calendly.com/"
}

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.

21 top-level fields, read from report.schema.json (JSON Schema draft-07).

SaaS Pricing report fields
Field Type Required Constraints
schema_version const "1.0" Required —
company_website null | string Required —
pricing_url null | string Required —
status enum Required one of: verified, partial, unknown, invalid_input
plan_count integer Required ≥ 0
plans array of object Required —
ambiguous_cards integer Required —
coverage_complete boolean Required —
checked_urls array of string Required —
source_errors array of object Required —
checked_at string Required format date-time
completed_at string Required format date-time
coverage_scope string Required —
error_code null | string Required —
error_message null | string Required —
http_request_count integer Required ≥ 0
downloaded_bytes integer Required ≥ 0
duration_ms integer Required ≥ 0
billing_event string | null Required —
billing_quantity integer Required 0–1
report_id string Required pattern ^[a-f0-9]{64}$

Recorded example

Recorded example — observed 2026-10-08 11:45 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.

SaaS Pricing report — Calendly

status: verified (Verified)
Subject
Calendly
Observed
Run ID
GlwOtw5pbHiP4u2PX
Build
0.2.3 (build ID fbB0XdDfHDC5cobhB)
Report SHA-256
53977266aa1fca4d2dec9b8b272e5f71af06aadf9f568724a1b4039f704c9ec3
company_website
https://calendly.com/
pricing_url
https://calendly.com/pricing
plan_count
3
ambiguous_cards
0
coverage_complete
false
coverage_scope
One public company website and up to three same-company pricing URLs; static HTML only.

Plans (3)

Plans in the recorded report (plans). Open a row’s evidence to see every source field.
plan_name price_text price_type billing_period Evidence
Free Free free null

Evidence — row 1

plans
currency_marker
null
billing_note
null
source_url
https://calendly.com/pricing (opens in new tab)
checked_at
2026-10-08T11:45:12.774Z
evidence_text
FreeAlways freeGet started
evidence_sha256
dea308e80e37727db7672a246a299017f88056a316824ceba8f582abc6656c85
extraction_method
semantic_card
Standard $10 numeric month

Evidence — row 2

plans
currency_marker
$
billing_note
Page billing controls mention billed yearly / billed monthly; active selection was not verified.
source_url
https://calendly.com/pricing (opens in new tab)
checked_at
2026-10-08T11:45:12.774Z
evidence_text
StandardAdd Notetaker & Callie$10/seat/moSeats are required for users to connect calendars and host Calendly meetings - meeting invitees do not require a seat.Save 17%Get started [Page billing controls: billed yearly / billed monthly]
evidence_sha256
dea308e80e37727db7672a246a299017f88056a316824ceba8f582abc6656c85
extraction_method
semantic_card
Teams $16 numeric month

Evidence — row 3

plans
currency_marker
$
billing_note
Page billing controls mention billed yearly / billed monthly; active selection was not verified.
source_url
https://calendly.com/pricing (opens in new tab)
checked_at
2026-10-08T11:45:12.774Z
evidence_text
TeamsAdd Notetaker & Callie$16/seat/moSeats are required for users to connect calendars and create Calendly links to help book meetings - meeting invitees do not require an account or seat.Save 20%Get started [Page billing controls: billed yearly / billed monthly]
evidence_sha256
dea308e80e37727db7672a246a299017f88056a316824ceba8f582abc6656c85
extraction_method
semantic_card

Sources checked (2)

From checked_urls in the report. A source listed here was fetched during the recorded run; the report covers these sources only, not the whole web.

  1. https://calendly.com/
  2. https://calendly.com/pricing

Reports may precede final event charging; their billing fields alone do not establish a settled debit.

Show the full raw report JSON

Unmodified report · run GlwOtw5pbHiP4u2PX
{
  "schema_version": "1.0",
  "company_website": "https://calendly.com/",
  "pricing_url": "https://calendly.com/pricing",
  "status": "verified",
  "plan_count": 3,
  "plans": [
    {
      "plan_name": "Free",
      "price_text": "Free",
      "price_type": "free",
      "currency_marker": null,
      "billing_period": null,
      "billing_note": null,
      "source_url": "https://calendly.com/pricing",
      "checked_at": "2026-10-08T11:45:12.774Z",
      "evidence_text": "FreeAlways freeGet started",
      "evidence_sha256": "dea308e80e37727db7672a246a299017f88056a316824ceba8f582abc6656c85",
      "extraction_method": "semantic_card"
    },
    {
      "plan_name": "Standard",
      "price_text": "$10",
      "price_type": "numeric",
      "currency_marker": "$",
      "billing_period": "month",
      "billing_note": "Page billing controls mention billed yearly / billed monthly; active selection was not verified.",
      "source_url": "https://calendly.com/pricing",
      "checked_at": "2026-10-08T11:45:12.774Z",
      "evidence_text": "StandardAdd Notetaker & Callie$10/seat/moSeats are required for users to connect calendars and host Calendly meetings - meeting invitees do not require a seat.Save 17%Get started [Page billing controls: billed yearly / billed monthly]",
      "evidence_sha256": "dea308e80e37727db7672a246a299017f88056a316824ceba8f582abc6656c85",
      "extraction_method": "semantic_card"
    },
    {
      "plan_name": "Teams",
      "price_text": "$16",
      "price_type": "numeric",
      "currency_marker": "$",
      "billing_period": "month",
      "billing_note": "Page billing controls mention billed yearly / billed monthly; active selection was not verified.",
      "source_url": "https://calendly.com/pricing",
      "checked_at": "2026-10-08T11:45:12.774Z",
      "evidence_text": "TeamsAdd Notetaker & Callie$16/seat/moSeats are required for users to connect calendars and create Calendly links to help book meetings - meeting invitees do not require an account or seat.Save 20%Get started [Page billing controls: billed yearly / billed monthly]",
      "evidence_sha256": "dea308e80e37727db7672a246a299017f88056a316824ceba8f582abc6656c85",
      "extraction_method": "semantic_card"
    }
  ],
  "ambiguous_cards": 0,
  "coverage_complete": false,
  "checked_urls": [
    "https://calendly.com/",
    "https://calendly.com/pricing"
  ],
  "source_errors": [],
  "checked_at": "2026-10-08T11:45:12.424Z",
  "completed_at": "2026-10-08T11:45:13.053Z",
  "coverage_scope": "One public company website and up to three same-company pricing URLs; static HTML only.",
  "error_code": null,
  "error_message": null,
  "http_request_count": 3,
  "downloaded_bytes": 2058390,
  "duration_ms": 629,
  "billing_event": null,
  "billing_quantity": 0,
  "report_id": "e507bfa93369e19a46ff12f66c5ac48f191e8b4d682a1f206b6f85aa65ce5b1e"
}

Download saas-pricing.json — this report plus provenance (input used, run, build, owner-funded flag).

Other recorded examples: Hiring Signals · Contact & Booking · Retail Availability · Customer Proof · Partner Programs · Integration Evidence

Evidence & limits

Verification scope
A plan and displayed price are associated in the same checked source. Currency symbols and billing periods are preserved as stated.
Coverage limits
Static extraction is not an exhaustive catalog. Regional prices, tax, discounts, add-ons and dynamic widgets may remain unknown. Do not infer an ISO currency from a symbol.
Request bounds
8 requests, 8 MB total, 3 MB per page, 35-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-saas-pricing
Actor ID
FqG15P6FbSTh0QPqq
Default build
0.2.3
Pricing model
PAY_PER_EVENT · event verified-pricing-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-saas-pricing

Inspect without purchase

Both of these read public metadata only. They do not start a run and need no token.

MCP fetch-actor-details (on https://mcp.apify.com?tools=search-actors,fetch-actor-details)
{
  "name": "fetch-actor-details",
  "arguments": {
    "actor": "impressionable_lupine/verified-saas-pricing",
    "output": {
      "pricing": true,
      "inputSchema": true,
      "outputSchema": true,
      "metadata": true,
      "readme": true
    }
  }
}
REST API — anonymous GET
# Free, read-only: public Actor metadata (pricing, builds). Does not start a run.
curl "https://api.apify.com/v2/acts/FqG15P6FbSTh0QPqq"

Price & charge trigger

$0.02 USD per eligible report event · max 1 event per run
PAY_PER_EVENT event: verified-pricing-report
Event
Verified pricing report (verified-pricing-report)
Charge trigger
One event for verified plans (including explicit free plans) or a supported partial positive.
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
“Charged once for a report containing source-checked public SaaS plan prices. Unknown 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.

SaaS Pricing statuses and report events
StatusMeaningReport event
verified Plans and displayed prices associated in the same checked source (including explicit free plans). Yes — one event
partial Supported partial positive: some plans or prices verified, others ambiguous or missing. Yes — one event
unknown No plan–price association could be verified in the checked sources. No event
invalid_input Fix the caller input (for example, a pricing URL on a different domain). No event

When to choose

Choose it when
Source-backed pricing snapshots for competitive research and change comparisons.
Simpler alternative
If you only need to read one pricing page once, open it directly. Choose this when you need a dated, source-hashed snapshot in JSON for comparison.

Do not choose it for

  • Exhaustive plans from dynamic pricing widgets
  • Checkout totals, taxes, negotiated quotes or plan entitlement
  • Proving a pricing change without a previous observation

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. 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/FqG15P6FbSTh0QPqq"
  2. 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/FqG15P6FbSTh0QPqq/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://calendly.com/"}'

    Limits are query parameters: build 0.2.3, memory 512 MB, timeout 60 s, maxTotalChargeUsd=0.02.

  3. 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. 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. 1 · Inspect: fetch-actor-details (free; works on the anonymous inspection endpoint)
    {
      "name": "fetch-actor-details",
      "arguments": {
        "actor": "impressionable_lupine/verified-saas-pricing",
        "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. 2 · call-actor — only after spending is authorized (limits in callOptions, never in input)
    {
      "name": "call-actor",
      "arguments": {
        "actor": "impressionable_lupine/verified-saas-pricing",
        "input": {
          "company_website": "https://calendly.com/"
        },
        "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. 3 · Poll the same run
    {
      "name": "get-actor-run",
      "arguments": {
        "runId": "<runId returned by call-actor>"
      }
    }
  4. 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.

Agent quickstart · Markdown doc for this capability

Last verification

Last metadata verification: 8 Oct 2026 ().

A read-only, anonymous GET https://api.apify.com/v2/acts/FqG15P6FbSTh0QPqq confirmed the public Actor, its default build 0.2.3 and its pay-per-event pricing (verified-pricing-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.

GitHub docs repo · Release notes