# SaaS Pricing Page Scraper & Plan Tier Auditor (`ausbizstack/b2b-saas-pricing-tier-plg-auditor`) Actor

SaaS pricing page scraper for competitor research. For each domain it extracts plan names, price points, currency and annual discount, classifies free trial vs freemium vs sales-led (PLG) motion, and flags SSO/SOC 2 gates and billing stack (Stripe, Chargebee, Paddle).

- **URL**: https://apify.com/ausbizstack/b2b-saas-pricing-tier-plg-auditor.md
- **Developed by:** [AusBizStack Intelligence](https://apify.com/ausbizstack) (community)
- **Categories:** Business, Marketing, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 saas pricing tier audits

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

**SaaS Pricing Page Scraper & Plan Tier Auditor** lets you run a pricing page scraper for a list of companys in bulk. For each domain it extracts plan names, price points, currency and annual discount, classifies free trial vs freemium vs sales-led (PLG) motion, and flags SSO/SOC 2 gates and billing stack (Stripe, Chargebee, Paddle).

SaaS Pricing Page Scraper & Plan Tier Auditor is built by AusBizStack, reads only public web pages and DNS, and returns one clean row per company that you can export to CSV, Excel, JSON or Google Sheets, or call through the Apify API.

### What does SaaS Pricing Page Scraper & Plan Tier Auditor do?

SaaS pricing page scraper for competitor research. For each domain it extracts plan names, price points, currency and annual discount, classifies free trial vs freemium vs sales-led (PLG) motion, and flags SSO/SOC 2 gates and billing stack (Stripe, Chargebee, Paddle).

- **Pricing page → structured data:** plan names, price points, currencies, annual-discount detection and a `gtmMotionClassification` (PLG freemium, PLG free trial, hybrid, sales-led enterprise, usage-based).
- **Enterprise readiness at a glance:** SSO / SAML and SOC 2 / security-page signals plus the billing stack (Stripe, Chargebee, Paddle and others).
- **Works on a list, not one URL:** paste domains and get one scored row each. $10 / 1,000 results (Free $10 · Bronze $9 · Silver $8 · Gold+ $7). Failed or unreachable domains cost $0.

### What data can I get with SaaS Pricing Page Scraper & Plan Tier Auditor?

#### What This Actor Audits & Extracts Per SaaS Company

1. **GTM Motion Classification (`gtmMotionClassification`):**
   - Classifies every SaaS company into `PLG_FREEMIUM`, `PLG_FREE_TRIAL`, `HYBRID_PLG_ENTERPRISE`, `SALES_LED_ENTERPRISE`, or `USAGE_BASED_PAYG`.
2. **Pricing Page, Plan Tiers, Price Points & Currencies:**
   - Discovers and parses `/pricing` and `/plans` to extract `detectedPlanNames` (`Free`, `Starter`, `Standard`, `Plus`, `Pro`, `Team`, `Business`, `Scale`, `Enterprise`), `samplePricePoints` (`$X/mo`, `% + fee`), `detectedCurrencies` (`USD`, `AUD`, `GBP`, `EUR`), and `annualDiscountText`.
3. **PLG vs. Enterprise Security Gate Signals:**
   - **PLG Signals (`plgSignals`):** `hasFreeTier`, `hasFreeTrial`, `selfServeSignupDetected`, `usageBasedPricingDetected`, `interactiveCalculatorDetected`.
   - **Enterprise Gates (`enterpriseReadinessSignals`):** `hasEnterpriseTier`, `bookDemoCtaDetected`, `ssoSamlMentioned` (`SSO`/`SAML`/`SCIM`/`Okta`), `soc2Iso27001GdprMentioned` (`SOC 2`/`ISO 27001`/`GDPR`/`HIPAA`), and `slaMentioned`.
4. **Billing, Metering & Product Analytics Stack (`billingAndMonetizationStack`):**
   - Detects `Stripe`, `Chargebee`, `Recurly`, `Paddle`, `Zuora`, `Maxio`, `Orb`, `Metronome`, `ProfitWell`, `LaunchDarkly`, `Segment`, `Amplitude`, `PostHog`, `Mixpanel`, `Intercom`, `HubSpot`, `Salesforce`, `Qualified`, and `Chili Piper`.
5. **Role-Based Corporate Contacts (`0` Personal Emails) & Sales Hooks:**
   - Extracts only generic corporate addresses (`sales@`, `enterprise@`, `support@`, `billing@`, `security@`) and generates **`competitiveIntelSummary`**, **`revOpsSalesHook`**, and **`croPricingAgencyHook`**.

### How to use SaaS Pricing Page Scraper & Plan Tier Auditor

1. Click **Try for free** (or **Start**) on this page and sign in to Apify. The free plan's monthly credit covers a first test.
2. Paste your companys into **SaaS Domains or URLs** (`domains`), one per line.
3. Leave the other options on their defaults, or switch checks on or off.
4. Click **Start**. Each company usually finishes in a few seconds.
5. Open the **Output** tab and export to CSV, Excel or JSON, or connect the dataset to Google Sheets, Make, n8n or Clay.

### How much does SaaS Pricing Page Scraper & Plan Tier Auditor cost?

SaaS Pricing Page Scraper & Plan Tier Auditor uses pay-per-event pricing: **$10 per 1,000 companys** (Free $10 · Bronze $9 · Silver $8 · Gold+ $7, by Apify plan), plus a tiny start fee per run. Failed, timed-out or unreachable companys still appear in the dataset with a `status` and reason, but cost **$0**. Apify's free plan includes monthly platform credit, which is enough to test SaaS Pricing Page Scraper & Plan Tier Auditor on a short list.

### Output example

A trimmed row from a real run (29 Oct 2026). Long text fields are shortened.

```json
{
  "domain": "linear.app",
  "url": "https://linear.app/",
  "status": "audited",
  "companyName": "Linear",
  "gtmMotionClassification": "HYBRID_PLG_ENTERPRISE",
  "hasPublicPricing": true,
  "pricingPageUrl": "https://linear.app/pricing",
  "detectedCurrencies": [
    "USD"
  ],
  "samplePricePoints": [
    "$0",
    "$10 per user",
    "$16 per user",
    "$8"
  ],
  "detectedPlanNames": [
    "Free",
    "Basic",
    "Teams",
    "Business"
  ],
  "annualDiscountDetected": false,
  "hasFreeTier": true,
  "hasFreeTrial": false,
  "usageBasedPricingDetected": false,
  "hasEnterpriseTier": true,
  "ssoSamlMentioned": true,
  "soc2Iso27001GdprMentioned": true,
  "billingAndMonetizationStack": [],
  "hasLlmsTxt": true,
  "roleEmails": [
    "support@linear.app"
  ],
  "pricingTransparencyScore": 100,
  "gtmMaturityScore": 90,
  "competitiveIntelSummary": "Linear (linear.app) operates a HYBRID_PLG_ENTERPRISE motion with publicly transparent pricing across Free, Basic, Teams, Business, Company, Enterprise ($0, $10 per user,…",
  "auditedAt": "2026-10-29T07:16:20.736Z"
}
```

### Use cases

- Pricing intelligence: benchmark competitor plans and price points.
- Product-led growth research: see who runs free trial vs freemium.
- B2B lead generation: find SaaS companies using a given billing stack.

#### How do I track competitor pricing?

Run the Actor on your competitors' domains (on a schedule if you like). Each row lists their plans, prices, currency and annual discount so you can compare over time.

#### Does a SaaS company offer a free trial or freemium plan?

The Actor classifies each pricing page as free trial, freemium or sales-led (contact sales).

#### Which SaaS tools gate SSO behind enterprise plans?

It flags SSO and SOC 2 mentions on pricing and security pages so you can see which plan tier they sit in.

### Integrations (API, Make, n8n, Clay, MCP)

Call SaaS Pricing Page Scraper & Plan Tier Auditor from the Apify API, schedule it in Apify, or plug it into Make, n8n, Clay, Zapier or an AI agent through the Apify MCP server (`mcp.apify.com`). Ready-to-import Make and n8n templates that send results to Google Sheets are free to download at https://ausbizstack.github.io/#templates.

##### 1. Claude Desktop & Cursor IDE via Apify MCP (`mcp.apify.com`)

```json
{
  "mcpServers": {
    "ausbizstack-apify": {
      "command": "npx",
      "args": [
        "-y",
        "@apify/actors-mcp-server",
        "--actors",
        "ausbizstack/b2b-saas-pricing-tier-plg-auditor,ausbizstack/b2b-hiring-intent-ats-careers-enricher,ausbizstack/b2b-email-security-dmarc-spf-auditor"
      ],
      "env": {
        "APIFY_TOKEN": "YOUR_APIFY_API_TOKEN"
      }
    }
  }
}
```

##### 2. Apify REST API (`curl` — Synchronous JSON Dataset Output)

```bash
curl -X POST "https://api.apify.com/v2/acts/ausbizstack~b2b-saas-pricing-tier-plg-auditor/run-sync-get-dataset-items" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "domains": [
      "stripe.com",
      "canva.com",
      "xero.com",
      "linear.app",
      "posthog.com"
    ],
    "probeEnterpriseAndSecurityPages": true,
    "maxConcurrency": 10
  }'
```

Pass your token as a header, never in the URL:

```bash
curl -X POST "https://api.apify.com/v2/acts/ausbizstack~b2b-saas-pricing-tier-plg-auditor/run-sync-get-dataset-items" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" -H "Content-Type: application/json" -d '{...}'
```

### Privacy and data scope

- **Zero Personal Emails (`0` PII):** Only role-based corporate addresses (`sales@`, `enterprise@`, `support@`, `billing@`, `security@`) are extracted or returned.

### FAQ

**What does SaaS Pricing Page Scraper & Plan Tier Auditor do?**
For each SaaS domain it reads the homepage and `/pricing` / `/plans` (plus `/enterprise`, `/security` and `/llms.txt` when enabled) and returns plan names, price points, currencies, the go-to-market motion, enterprise-readiness signals and billing tools detected.

**What if pricing is "Contact sales"?**
The row is still returned. `hasPublicPricing` is false or `samplePricePoints` is empty, `bookDemoCtaDetected` / `hasEnterpriseTier` show the sales-led signals, and the motion is usually classified as sales-led enterprise.

**Does it render JavaScript pricing tables?**
No. It uses plain HTTP requests and parses the HTML the server returns, without a headless browser. Prices that are only injected by JavaScript after page load (or behind a currency/region toggle) may be missed or partial.

**Which currencies are detected?**
`detectedCurrencies` can include USD, AUD, GBP, EUR, NZD and CAD (USD is assumed when none is found). `samplePricePoints` picks up prices written with $, US$, A$/AU$, CA$, £ or €. No currency conversion is done.

**How much does it cost, and what is the output?**
$10 per 1,000 results (Free $10 · Bronze $9 · Silver $8 · Gold+ $7). Invalid, timed-out or unreachable domains cost $0. You get one JSON row per domain (see the Output tab), exportable as JSON, CSV or Excel. Pass domains in `domains` (or `targets`).

**Who do I contact for help or a custom version?**
Email ausbizstack@outlook.com.

### Acceptable use

This Actor returns publicly available business information only. You are responsible for how you use it. If you send commercial electronic messages to Australian recipients you must comply with the *Spam Act 2003* (Cth): have consent (express or inferred), identify yourself accurately, and include a functional unsubscribe. Respect any website notice stating that unsolicited messages are not wanted, and comply with the Privacy Act 1988 (Cth), GDPR and other applicable laws. Do not use this Actor for bulk unsolicited messaging.

### Other AusBizStack Actors

- [Tech Stack Detector](https://apify.com/ausbizstack/b2b-tech-stack-contact-abn-enricher): tech stack detector and website technology lookup with role-based contact enrichment.
- [llms.txt Generator & GEO Audit](https://apify.com/ausbizstack/ai-geo-llms-txt-auditor): llms.txt generator and GEO audit for AI search visibility.
- [DMARC, SPF & DKIM Checker](https://apify.com/ausbizstack/b2b-email-security-dmarc-spf-auditor): bulk DMARC checker, SPF checker and DKIM lookup.
- [ABN Lookup Australia](https://apify.com/ausbizstack/au-abn-kyb-commercial-lead-enricher): bulk ABN lookup, ACN and GST check for Australian businesses.
- [Shopify Apps Detector](https://apify.com/ausbizstack/shopify-ecommerce-tech-pixel-auditor): Shopify apps detector and store tech stack checker.
- [ATS Detector & Careers Page Finder](https://apify.com/ausbizstack/b2b-hiring-intent-ats-careers-enricher): ATS detector and careers page finder with hiring signals.
- [Store Locator Scraper](https://apify.com/ausbizstack/multi-location-franchise-footprint-mapper): store locator scraper and franchise location counter.

Questions or a custom version? Email ausbizstack@outlook.com.

# Actor input Schema

## `domains` (type: `array`):

Enter B2B SaaS domains or URLs (e.g. 'stripe.com', 'canva.com', 'xero.com', 'linear.app', 'posthog.com').

## `targets` (type: `array`):

Optional alias for domains so Clay, n8n, Make, and MCP agents can pass either `domains` or `targets`.

## `probeEnterpriseAndSecurityPages` (type: `boolean`):

When true, inspects `/enterprise`, `/security`, and `/llms.txt` in addition to `/pricing` and `/plans` to detect SSO/SAML, SOC2/ISO27001 gates, and AI discovery readiness.

## `maxConcurrency` (type: `integer`):

Number of domains processed in parallel (1 to 200, default 50). 10 is plenty for small lists.

## `requestTimeoutSecs` (type: `integer`):

HTTP timeout in seconds per request.

## Actor input object example

```json
{
  "domains": [
    "stripe.com",
    "canva.com",
    "xero.com",
    "linear.app",
    "posthog.com"
  ],
  "probeEnterpriseAndSecurityPages": true,
  "maxConcurrency": 10,
  "requestTimeoutSecs": 5
}
```

# 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 = {
    "domains": [
        "stripe.com",
        "canva.com",
        "xero.com",
        "linear.app",
        "posthog.com"
    ],
    "maxConcurrency": 10,
    "requestTimeoutSecs": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("ausbizstack/b2b-saas-pricing-tier-plg-auditor").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 = {
    "domains": [
        "stripe.com",
        "canva.com",
        "xero.com",
        "linear.app",
        "posthog.com",
    ],
    "maxConcurrency": 10,
    "requestTimeoutSecs": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("ausbizstack/b2b-saas-pricing-tier-plg-auditor").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "domains": [
    "stripe.com",
    "canva.com",
    "xero.com",
    "linear.app",
    "posthog.com"
  ],
  "maxConcurrency": 10,
  "requestTimeoutSecs": 5
}' |
apify call ausbizstack/b2b-saas-pricing-tier-plg-auditor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ausbizstack/b2b-saas-pricing-tier-plg-auditor"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/fJdSpcU6gdhlBbdE7/builds/AB5K1gfEtEfIPxGjv/openapi.json
