# Postbye Subscription Cancellation Guides (`postbye/postbye-cancellation-guides`) Actor

Look up how a company takes subscription cancellations, its notice period, mailing address on file and a ready cancellation letter. Free, no API key.

- **URL**: https://apify.com/postbye/postbye-cancellation-guides.md
- **Developed by:** [Postbye Team](https://apify.com/postbye) (community)
- **Categories:** Developer tools, Automation, Lead generation
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

Postbye (https://postbye.com/) cancels subscriptions for you by mailing a formal cancellation letter, tracked until it is delivered.

This free Actor looks up a company in Postbye's public cancellation-guide database and returns, as structured data, how that company takes cancellations (mail, in person, online, email), the notice period, the traps to check first, the mailing address on file, the guide URL on postbye.com and, if you ask for it, a ready-to-fill plain-text cancellation letter. It needs no API key and no account on any other service.

### What you get

For each matching company one dataset item with:

| Field | Meaning |
|---|---|
| `name`, `slug`, `category` | Company and its Postbye slug and category |
| `howToCancel` | How the company takes cancellations |
| `noticePeriod` | Notice the company requires before the next billing date |
| `traps` | Fees and conditions to check before cancelling |
| `mailingAddresses` | Mailing address(es) on file, each with a label and a note on whether it is the right place for cancellations |
| `letterGoesTo` | Where a written cancellation should be sent |
| `sources`, `verifiedOn` | Where the facts come from and when they were last verified |
| `guideUrl`, `addressUrl` | The guide and address pages on postbye.com |
| `letter` | Cancellation letter text (only when `includeLetter` is on) |

### How to use

1. Open the Actor and type a company name (for example `Planet Fitness`) or a Postbye slug (`planet-fitness`).
2. Optionally raise `maxResults` (1 to 10) to get the closest matches, or switch on `includeLetter` to add the letter text. Add your name and account number to fill those placeholders in the letter.
3. Click Start and read the dataset (JSON, CSV, Excel or the API).

### Input example

```json
{
  "company": "Planet Fitness",
  "maxResults": 1,
  "includeLetter": true
}
```

### Output example

Taken from a real run of this Actor (letter text shortened here):

```json
{
  "query": "Planet Fitness",
  "name": "Planet Fitness",
  "slug": "planet-fitness",
  "category": "Gyms & fitness",
  "method": "letter",
  "howToCancel": "Mail (written notice to your home club), in person at your home club, or online (sign in to the member portal on planetfitness.com)",
  "noticePeriod": "Cancel at least 7 days before the next billing date; same 7 days before the annual fee date",
  "traps": [
    "$58 buyout fee if the membership has a minimum term and ends early",
    "Annual fee bills separately and needs its own 7-day notice"
  ],
  "letterGoesTo": "Your home club, not head office. Postbye addresses the letter to your home club: you pick it at checkout from the 2,732 Planet Fitness clubs on file.",
  "mailingAddresses": [
    {
      "label": "Head office (not for cancellations)",
      "lines": ["4 Liberty Ln W", "Hampton, NH 03842"]
    }
  ],
  "sources": ["https://www.planetfitness.com/about-planet-fitness/customer-service"],
  "verifiedOn": "2026-10-28",
  "guideUrl": "https://postbye.com/cancel/planet-fitness",
  "addressUrl": "https://postbye.com/cancel/planet-fitness/address",
  "letter": "[Your full name]\n[Your street address]\n...\nSubject: Subscription termination – Planet Fitness\n..."
}
```

### How it works

The Actor calls Postbye's public, read-only MCP endpoint `https://postbye.com/mcp` (JSON-RPC over HTTP POST, Streamable HTTP) with the tools `search_companies`, `get_cancellation_guide` and, if requested, `get_cancellation_letter`. Nothing you enter is stored by the Actor. If no guide matches, the dataset stays empty and the run log says so.

You can use the same endpoint directly from an MCP client such as Claude, Cursor or ChatGPT. Setup instructions: https://postbye.com/mcp-server

### About Postbye

Postbye mails the cancellation letter for you and tracks it until it is delivered. Website: https://postbye.com/ . Guides for every company: https://postbye.com/cancel

Author: Postbye Team. Licence: MIT.

# Actor input Schema

## `company` (type: `string`):

A company name such as "Planet Fitness" or a Postbye slug such as "planet-fitness".

## `maxResults` (type: `integer`):

How many matching companies to return (1 to 10).

## `includeLetter` (type: `boolean`):

Add a plain-text cancellation letter for each company, with bracketed placeholders for your own details.

## `customerName` (type: `string`):

Fills the name placeholders in the letter. Only used when the letter is included.

## `accountNumber` (type: `string`):

Fills the account placeholder in the letter. Only used when the letter is included.

## Actor input object example

```json
{
  "company": "Planet Fitness",
  "maxResults": 1,
  "includeLetter": false
}
```

# Actor output Schema

## `guides` (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 = {
    "company": "Planet Fitness"
};

// Run the Actor and wait for it to finish
const run = await client.actor("postbye/postbye-cancellation-guides").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 = { "company": "Planet Fitness" }

# Run the Actor and wait for it to finish
run = client.actor("postbye/postbye-cancellation-guides").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 '{
  "company": "Planet Fitness"
}' |
apify call postbye/postbye-cancellation-guides --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,postbye/postbye-cancellation-guides"
        }
    }
}
```

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/yTbE8GOugwSeij7qB/builds/6w1mjF2aZR0G4wcnN/openapi.json
