Subscription Auto-Renewal Disclosure Checker avatar

Subscription Auto-Renewal Disclosure Checker

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Subscription Auto-Renewal Disclosure Checker

Subscription Auto-Renewal Disclosure Checker

Check subscription, membership and free-trial offer text for California automatic renewal law and FTC ROSCA disclosure gaps: renews-until-cancel, price, billing period, cancellation policy, post-trial price, online cancellation and pre-checked consent. Sources per finding.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Ultimate Foresight Inc

Ultimate Foresight Inc

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Share

Check subscription, membership and free-trial offers for automatic renewal disclosure gaps under California's Automatic Renewal Law (Bus. & Prof. Code 17600-17606, with the amendments that apply from July 1, 2025) and the federal ROSCA. The Auto-Renewal Disclosure Checker reads offer, checkout and consent text and flags offers that don't say they renew until cancelled, the recurring price, the billing period, the cancellation policy, the price after a free trial or how to cancel online, plus pre-checked consent boxes. Click Start with the prefilled example to see it work.

This is an automated screen of offer text, not a legal determination. It can't judge how clearly or prominently terms are shown, or check the cancellation flow. A clean result doesn't mean an offer complies. Not legal advice; every row carries this disclaimer and a timestamp.

What does the Auto-Renewal Disclosure Checker do?

  • ✅ Renewal not disclosed (high): no 'renews automatically' or 'until you cancel' wording.
  • ✅ Missing price, term or cancellation policy: the recurring amount, billing frequency and how to cancel (BPC 17601(a)(2)).
  • ✅ Free trials and intro prices: missing post-trial price, trial length or the amount after an introductory price.
  • ✅ Offline-only cancellation (high): phone, letter or in-person only, while online sign-ups must be cancellable online.
  • ✅ Pre-checked consent and consent text that doesn't mention renewal.
  • ✅ Pages with no recurring offer get an info note, so About and blog pages from a crawl aren't counted as problems.
  • ✅ Output per row: trialDetected, elementsFound, riskLevel, issueCount, categoriesFlagged, issues (ruleId, severity, message, quote, sourceUrl, fixHint), checkedAt and a disclaimer.

Who is it for?

  • SaaS, app, streaming and subscription box companies checking pricing and checkout pages.
  • Gyms, clubs and membership businesses reviewing sign-up terms.
  • Agencies and compliance teams auditing many client sites from a crawl.
  • Consumer advocates and journalists studying subscription traps.

How to check subscription offers for auto-renewal disclosures

  1. Click Start with the prefilled example (a vague free trial, a gym with phone-only cancellation, an intro offer with a pre-checked box and a complete app offer).
  2. Replace Offers with your own: offerText, optional checkoutText, consentText, consentPrechecked and cancellationText.
  3. Or enter a Dataset ID from Website Content Crawler or another crawler run on pricing and sign-up pages; use Field map to point at markdown or text.
  4. Turn on Only save rows with findings to skip clean pages; you only pay for saved rows.
  5. Export results as CSV, Excel or JSON, or fetch them through the API.

Input example

This is the prefilled input:

{
"offers": [
{
"id": "EXAMPLE-TRIAL",
"title": "Example streaming free trial",
"offerText": "Start your free trial today! Cancel anytime."
},
{
"id": "EXAMPLE-GYM",
"title": "Example gym membership",
"offerText": "Membership $39.99/month, renews automatically until you cancel. To cancel, call our member services line or send a letter to your club."
},
{
"id": "EXAMPLE-INTRO",
"title": "Example meal kit intro offer",
"offerText": "Introductory price $1 for the first 3 months! Renews automatically monthly until you cancel. Cancel online in your account.",
"consentPrechecked": true
},
{
"id": "EXAMPLE-APP",
"title": "Example app subscription",
"offerText": "Start your 7-day free trial. After the trial, you'll be charged $9.99 per month. Your subscription renews automatically every month until you cancel. Cancel anytime online in Account settings; cancellation takes effect at the end of the current billing period.",
"consentText": "I agree to the automatic renewal terms above."
}
]
}

Dataset mode:

{"datasetId": "YOUR_DATASET_ID", "fieldMap": {"offerText": "markdown", "title": "metadata.title"}, "onlyFlagged": true}

Output example

Real output from a run of the prefilled input on 2026-11-01 (long finding lists are shortened here; the run returns all of them):

[
{
"itemNo": 1,
"offerId": "EXAMPLE-TRIAL",
"title": "Example streaming free trial",
"recurringOfferDetected": true,
"trialDetected": true,
"elementsFound": {
"continuesUntilCancelled": false,
"cancellationPolicy": true,
"recurringChargeAmount": false,
"renewalLengthOrFrequency": false,
"onlineCancellation": false
},
"riskLevel": "high",
"issueCount": 6,
"categoriesFlagged": [
"cancellation_method_not_stated",
"post_trial_price_missing",
"recurring_amount_missing",
"renewal_not_disclosed",
"renewal_term_missing",
"trial_length_missing"
],
"issues": [
{
"ruleId": "renewal_not_disclosed",
"severity": "high",
"message": "The offer doesn't clearly say it renews automatically or continues until the consumer cancels (California BPC 17601(a)(2)(A); ROSCA requires all material terms before billing information is collected).",
"quote": null,
"sourceUrl": "https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=BPC&sectionNum=17601.",
"fixHint": "Add e.g. 'Your subscription renews automatically every month until you cancel.' near the consent button."
},
{
"ruleId": "recurring_amount_missing",
"severity": "high",
"message": "No recurring charge amount found (BPC 17601(a)(2)(C)).",
"quote": null,
"sourceUrl": "https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=BPC&sectionNum=17601.",
"fixHint": "State the amount, e.g. '$12.99 per month'."
},
{
"...": "4 more findings: renewal_term_missing 'No renewal length or billing frequency found (BPC ', post_trial_price_missing 'Example streaming free trial Start your free trial today! Cancel any...', trial_length_missing 'Example streaming free trial Start your free trial today! Cancel any...', cancellation_method_not_stated 'The offer doesn't say how to cancel (for example o'"
}
],
"url": null,
"checkedAt": "2026-11-01T19:35:05+00:00",
"disclaimer": "Automated keyword screening of the offer text supplied against California's Automatic..."
},
{
"itemNo": 2,
"offerId": "EXAMPLE-GYM",
"title": "Example gym membership",
"recurringOfferDetected": true,
"trialDetected": false,
"elementsFound": {
"continuesUntilCancelled": true,
"cancellationPolicy": true,
"recurringChargeAmount": true,
"renewalLengthOrFrequency": true,
"onlineCancellation": false
},
"riskLevel": "high",
"issueCount": 1,
"categoriesFlagged": [
"offline_only_cancellation"
],
"issues": [
{
"ruleId": "offline_only_cancellation",
"severity": "high",
"message": "Cancellation appears to require a phone call, mail or a visit. For offers accepted online, California requires cancellation online, at will, through a prominent link or button or a ready-made termination email (BPC 17602(d)); ROSCA requires a simple cancellation method.",
"quote": "...renews automatically until you cancel. To cancel, call our member services line or send a letter to your club.",
"sourceUrl": "https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=BPC&sectionNum=17602",
"fixHint": "Offer a cancel button in the account or a prefilled termination email."
}
],
"url": null,
"checkedAt": "2026-11-01T19:35:05+00:00",
"disclaimer": "Automated keyword screening of the offer text supplied against California's Automatic..."
},
{
"itemNo": 3,
"offerId": "EXAMPLE-INTRO",
"title": "Example meal kit intro offer",
"recurringOfferDetected": true,
"trialDetected": false,
"elementsFound": {
"continuesUntilCancelled": true,
"cancellationPolicy": true,
"recurringChargeAmount": true,
"renewalLengthOrFrequency": true,
"onlineCancellation": true
},
"riskLevel": "high",
"issueCount": 2,
"categoriesFlagged": [
"prechecked_consent",
"price_change_amount_missing"
],
"issues": [
{
"ruleId": "price_change_amount_missing",
"severity": "medium",
"message": "Introductory or promotional pricing is mentioned, but only one price was found. California requires disclosing that the charge will change and the amount it will change to, if known (BPC 17601(a)(2)(C)).",
"quote": "Example meal kit intro offer Introductory price $1 for the first 3 m...",
"sourceUrl": "https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=BPC&sectionNum=17601.",
"fixHint": "State the regular price that applies after the promotion."
},
{
"ruleId": "prechecked_consent",
"severity": "high",
"message": "The consent checkbox is pre-checked. California requires the consumer's affirmative consent before charging (BPC 17602(a)(2)), and ROSCA requires express informed consent; a pre-checked box is generally not treated as affirmative consent.",
"quote": null,
"sourceUrl": "https://www.law.cornell.edu/uscode/text/15/8403",
"fixHint": "Leave the consent checkbox unchecked by default."
}
],
"url": null,
"checkedAt": "2026-11-01T19:35:05+00:00",
"disclaimer": "Automated keyword screening of the offer text supplied against California's Automatic..."
},
{
"itemNo": 4,
"offerId": "EXAMPLE-APP",
"title": "Example app subscription",
"recurringOfferDetected": true,
"trialDetected": true,
"elementsFound": {
"continuesUntilCancelled": true,
"cancellationPolicy": true,
"recurringChargeAmount": true,
"renewalLengthOrFrequency": true,
"onlineCancellation": true
},
"riskLevel": "none found",
"issueCount": 0,
"categoriesFlagged": [],
"issues": [],
"url": null,
"checkedAt": "2026-11-01T19:35:05+00:00",
"disclaimer": "Automated keyword screening of the offer text supplied against California's Automatic..."
}
]

How much does it cost to check subscription offers?

This Actor uses pay-per-event pricing: $0.003 per offer saved plus a $0.00005 start fee per run, plus small platform usage paid by you (a few hundredths of a cent for small runs). That's about $3.00 for 1,000 offers and $30.00 for 10,000 plus usage. With Only save rows with findings on, rows without findings aren't saved or charged. You can set a maximum cost per run in the run options.

Use it through the API, integrations or AI agents

  • Run it and get results in one call: https://api.apify.com/v2/acts/ultimatemc~auto-renewal-disclosure-checker/run-sync-get-dataset-items
  • Use it from AI agents through the Apify MCP server: https://mcp.apify.com?tools=ultimatemc/auto-renewal-disclosure-checker
  • Schedule it after a daily scraper run, send flagged rows to Slack or email with webhooks, or connect it to Make, Zapier, n8n or Google Sheets.
  • Chain it after a website crawler by passing the crawler's dataset ID.

How it works

Checks are deterministic rules written from California Business and Professions Code 17601 and 17602, 15 U.S.C. 8403 (ROSCA) and the FTC's ROSCA page, checked on 2026-11-01. Text is matched for renewal, price, frequency, trial, cancellation and consent wording. No AI and no external calls.

Sources:

FAQ

Does it cover the FTC 'click to cancel' rule?

No. That rule was vacated by a federal court in July 2025, so the checker uses ROSCA and California's law.

Does it cover other states?

Not yet. Many states have similar laws; California's is one of the strictest, so it's a useful baseline.

Why is phone-only cancellation flagged?

California requires that consumers who sign up online can cancel online, and ROSCA requires a simple way to stop recurring charges.

Can it check the actual checkout flow?

No. It reads the text you supply. Crawl the pages first, or paste the offer and consent text.

Is it AI?

No. It's a fixed set of rules, so the same input always gives the same result.

Limitations

  • It can't judge prominence, placement or font size, which the law also requires.
  • Text-only: it doesn't test cancellation flows.
  • Federal ROSCA and California only.

Other tools by Ultimate Foresight

Found a false positive? Open an issue on the Issues tab with the offer text and what you expected, and we'll review the rule.