> ## Documentation Index
> Fetch the complete documentation index at: https://api.docs.dealmachine.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List Plans

List public self-serve subscription plans. No authentication is required.

The plan catalog is generated from the same `@dealmachine/shared/constants/plans` source used by the frontend. It only includes self-serve plans. Sales-managed Scale plans and private offer plans are not returned.

<RequestExample>
  ```bash cURL theme={null}
  curl https://api.v2.dealmachine.com/v1/plans
  ```

  ```typescript Node.js theme={null}
  const response = await fetch('https://api.v2.dealmachine.com/v1/plans');
  const { plans } = await response.json();

  for (const plan of plans) {
    console.log(plan.name, plan.stripe_price_ids.monthly);
  }
  ```

  ```python Python theme={null}
  import requests

  response = requests.get('https://api.v2.dealmachine.com/v1/plans')
  plans = response.json()['plans']

  for plan in plans:
      print(plan['name'], plan['stripe_price_ids']['monthly'])
  ```
</RequestExample>

<ResponseExample>
  ```json 200 Success theme={null}
  {
    "plans": [
      {
        "id": "prod_UXvhA0ZjLHucgF",
        "name": "Basic",
        "description": "For solo investors and small teams hunting off-market deals",
        "type": "solo",
        "pricing": {
          "currency": "usd",
          "monthly_price_cents": 9900,
          "annual_price_cents": 99000,
          "is_per_user": true
        },
        "credits": {
          "enrichment_per_month": 10000,
          "enrichment_per_year": 120000,
          "ai_per_month": 25000000
        },
        "features": ["Nationwide property & owner data", "Saved searches & filters"],
        "stripe_price_ids": {
          "monthly": "price_xxx_monthly",
          "annual": "price_xxx_annual"
        },
        "seats": {
          "min": 1,
          "max": 6
        }
      }
    ],
    "free_tier": {
      "enrichment_credit_cap": 0,
      "ai_credit_cap": 5000000
    }
  }
  ```
</ResponseExample>

## Response Fields

| Field                                  | Type           | Description                                            |
| -------------------------------------- | -------------- | ------------------------------------------------------ |
| `plans[].id`                           | string         | Stripe product ID for the current API environment      |
| `plans[].name`                         | string         | Plan name, such as `Basic` or `Pro`                    |
| `plans[].type`                         | string         | Self-serve plan family. Currently `solo`.              |
| `plans[].pricing.monthly_price_cents`  | number         | Monthly per-seat price in cents                        |
| `plans[].pricing.annual_price_cents`   | number         | Annual per-seat price in cents                         |
| `plans[].credits.enrichment_per_month` | number         | Monthly data credits per seat                          |
| `plans[].stripe_price_ids.monthly`     | string         | Monthly Stripe price ID to pass to `POST /v1/checkout` |
| `plans[].stripe_price_ids.annual`      | string         | Annual Stripe price ID to pass to `POST /v1/checkout`  |
| `plans[].seats.max`                    | number \| null | Maximum self-serve quantity for the plan               |

## Self-Serve Limits

Self-serve API checkout is capped at 60,000 monthly data credits. The returned plans already reflect that limit through their per-seat credit amounts and `seats.max` values.
