# Prop Firm Rules Feed (Futures): Prices, Drawdown, Payout Rules (`xprm-llc/propfirm-rules-feed`) Actor

Futures prop firm rules as data: list prices, drawdown, consistency, payout rules, rule changes and denial reasons, each with source URL and checked date.

- **URL**: https://apify.com/xprm-llc/propfirm-rules-feed.md
- **Developed by:** [Paul Scharr](https://apify.com/xprm-llc) (community)
- **Categories:** Business, Agents, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Prop Firm Rules Feed (Futures)

Structured, source-linked rules for **futures prop trading firms**: list evaluation prices, reset and activation fees, drawdown type, consistency rules, payout rules, a dated **rule-change log** and documented **payout-denial reasons**. Every row carries the firm's **source URL** and the **date it was checked**, plus a `dataAsOf` snapshot date.

Data comes from the [PropFirm Ledger](https://pscharrjr-bot.github.io/propfirm-ledger/), built only from public firm pages. No affiliate links.

> **Informational only, not financial or trading advice.** Prop firm rules and prices change often, including frequent promotions. Always verify with the firm at the linked source before buying an evaluation or trading.

### What you get

Firms in the current snapshot (14): Topstep, Apex Trader Funding, Alpha Futures, Take Profit Trader, MyFundedFutures, Tradeify, FundedNext Futures, Bulenox, Lumen Futures, FunderPro Futures, Funding Futures, Elite Trader Funding, Earn2Trade, TradeDay.

| Mode | One row per | Use it for |
|---|---|---|
| `firms` (default) | firm | Rules and prices for one, some or all firms |
| `compare` | firm, plus a `COMPARISON` table | Side-by-side comparison of 2+ firms |
| `changes` | rule change | "What changed since Sept 1?" |
| `denials` | payout-denial reason | Why payouts get denied, by firm |

#### How the data is handled

- **Unknown is null, never zero.** If a firm doesn't publish a reset fee, `resetFeeUsd` is `null`. A real `$0` activation fee stays `0`.
- **List prices, not promos.** Promotions change constantly; each row has a `priceNote`.
- **Conflicts are flagged, not guessed.** When a firm's own site contradicts itself (e.g. FunderPro's consistency rule: 40%/50% in the table, 45% in a tooltip), the row has `hasConflict: true`, a `conflicts` list with both values, and `consistencyRule: null`.
- **Denial reasons keep their type label.** Anecdotal Reddit trader reports are excluded by default; set `includeAnecdotal: true` to include them, marked `anecdotal: true`.

### Input examples

All firms, default fields:

```json
{}
```

Plans at 50K with a list eval price of $100 or less, confirmed prices only:

```json
{ "accountSize": "50K", "maxEvalPrice": 100, "includeUnknown": false, "ruleFields": ["pricing", "plans"] }
```

Compare three firms on price, drawdown and consistency:

```json
{ "mode": "compare", "firms": ["Topstep", "Apex", "Tradeify"], "ruleFields": ["pricing", "drawdown", "consistency", "payout"] }
```

Rule changes since August 1, 2026:

```json
{ "mode": "changes", "changesSince": "2026-08-01" }
```

Official payout-denial rules for Topstep:

```json
{ "mode": "denials", "firms": ["Topstep"] }
```

### Output example (firm row, trimmed)

```json
{
  "recordType": "firm", "firmSlug": "topstep", "firmName": "Topstep", "market": "futures",
  "pricingModel": "Monthly subscription", "minEvalPriceUsd": 49, "minActivationFeeUsd": 0,
  "plans": [{ "plan": "Standard path", "size": "50K", "accountSizeUsd": 50000, "evalPriceUsd": 49, "resetFeeUsd": 49, "activationFeeUsd": 149, "profitTargetUsd": null, "maxDrawdownUsd": 2000, "maxDrawdownDerived": false }],
  "drawdownRule": "EOD trailing MLL ($2K/$3K/$4.5K), monitored real-time, locks at start balance",
  "consistencyRule": "Best day < 55% of profit target (Combine)",
  "hasConflict": false, "conflicts": [],
  "sourceUrl": "https://help.topstep.com/en/articles/14289835-topstep-pricing-and-payment-questions",
  "sources": [{ "url": "https://help.topstep.com/en/articles/14289835-topstep-pricing-and-payment-questions", "checked": "2026-10-16" }],
  "checkedDate": "2026-10-17", "dataAsOf": "2026-10-17",
  "ledgerUrl": "https://pscharrjr-bot.github.io/propfirm-ledger/",
  "disclaimer": "Informational only, not financial or trading advice. ..."
}
```

In `compare` mode, the key-value store record `COMPARISON` holds a field-by-firm table. `RUN_SUMMARY` holds counts, warnings and `dataAsOf`.

### Worked examples (real output, data as of 2026-10-17)

**"Which 50K futures evals cost $100 or less?"** (`accountSize: "50K"`, `maxEvalPrice: 100`, `includeUnknown: false`)
| Firm | Plan | List eval price | Activation fee |
|---|---|---|---|
| Topstep | Standard path | $49/mo | $149 |
| Topstep | No Activation Fee path | $95/mo | $0 |
| FundedNext Futures | Flex | $74.99 | $0 |
| FunderPro Futures | Challenge | $79/mo | $69 (row flagged `hasConflict`) |

**"50K evals with at least $2,000 max drawdown and a profit target of $3,000 or less"** (`accountSize: "50K"`, `maxDrawdownAtLeast: 2000`, `maxProfitTarget: 3000`, `includeUnknown: false`)
| Firm | Plan | Profit target | Max drawdown | List eval price |
|---|---|---|---|---|
| FunderPro Futures | Challenge | $3,000 | $2,000 | $79/mo (consistency conflict flagged) |
| Alpha Futures | Standard | $3,000 | $2,000 | $129/mo |
| Take Profit Trader | Test | $3,000 | $2,000 | $170/mo |
| Earn2Trade | Gauntlet Mini | $3,000 | $2,000 | $170/mo |
| Lumen Futures | Evaluation | $3,000 | $2,000 | $198 |
| MyFundedFutures | Rapid | $3,000 | $2,000 | $209 |

**"Compare Topstep, Apex and Tradeify"** (`mode: "compare"`)
| Firm | Model | Lowest eval | Drawdown | Consistency |
|---|---|---|---|---|
| Topstep | Monthly subscription | $49 | EOD trailing MLL, locks at start balance | Best day < 55% of target (Combine) |
| Apex Trader Funding | One-time eval fee, 30-day access | null (unknown) | EOD or intraday trailing by product | 50% (payouts) |
| Tradeify | One-time purchase | $99 | EOD trailing, locks at start +$100 | Select 40% eval; Growth 35% |

**"What changed since August 1?"** (`mode: "changes"`, `changesSince: "2026-08-01"`): 3 rows

- 2026-09-01 Tradeify: Select payout caps table applies only to accounts bought before Sep 1, 2026
- 2026-08-25 MyFundedFutures: new purchases move to one-time payment; 7-day inactivity closure rule
- 2026-08-17 Take Profit Trader: minimum test days cut from 5 to 3 (new tests only)

**Conflict flag:** FunderPro's consistency rule comes back as `consistencyRule: null` with `conflicts: [{"field": "consistency", "values": ["40% eval / 50% funded (rules table)", "45% (tooltip)"]}]`.

Browse more samples on the [examples page](https://pscharrjr-bot.github.io/propfirm-rules-feed-examples/).

### Filters

- `firms`: names or slugs, partial match (`apex`, `MyFunded`).
- `market`: the snapshot covers **futures** only; other markets return 0 rows with a warning.
- `maxEvalPrice`, `accountSize`: plan-level filters on list prices and sizes.
- `maxDrawdownAtLeast`, `maxProfitTarget`: filter on each plan's numeric `maxDrawdownUsd` and `profitTargetUsd` (dollars). Plans where the firm doesn't publish the value have `null` (unknown, never zero). With `includeUnknown: true` (default) those plans pass and are listed in `unknownForFilters`; with `false` they're dropped.
- **Derived values:** Apex publishes a payout safety net (drawdown + $100), so Apex `maxDrawdownUsd` is derived (safety net minus $100). Those plans have `maxDrawdownDerived: true` and a `maxDrawdownNote`, and the firm row has `hasDerivedValues: true`. All other values are as published.
- **Conflicting sources:** when sources disagree on a number, it stays `null` with a note and a `conflicts` entry (e.g. TradeDay 150K max drawdown).

### For AI agents and MCP

- **MCP server:** connect `https://mcp.apify.com?actors=xprm-llc/propfirm-rules-feed` (Apify MCP server, OAuth or Apify token). The tool appears as `xprm-llc-slash-propfirm-rules-feed` in Claude Desktop, Claude Code, Cursor, VS Code, ChatGPT connectors or any MCP client.
- **Tool selection hints:** use this Actor for questions about futures prop firm (funded trader, evaluation, combine) prices, resets, activation fees, drawdown, consistency rules, payout rules, rule changes or payout denials. It needs no API keys or browsing and answers in about 5 seconds.
- **Prompts that work well:** "Which futures prop firms have a 50K eval under $100?" / "Which 50K evals give at least $2,000 drawdown with a $3,000 target?" / "Compare Topstep, Apex and Tradeify drawdown and consistency rules." / "What prop firm rules changed since September?" / "Why do Topstep payouts get denied?"
- **Tips for agents:** keep `ruleFields` small (e.g. `["pricing","drawdown"]`) to save tokens; `null` means unknown, never zero; mention when `maxDrawdownDerived` is true; check `hasConflict` and `conflicts`; cite `sourceUrl` and `checkedDate`; repeat the disclaimer; use `maxResults` to cap cost.
- **API (sync):** `POST https://api.apify.com/v2/acts/xprm-llc~propfirm-rules-feed/run-sync-get-dataset-items?token=APIFY_TOKEN` with the JSON input; the response is the rows. Also works with the LangChain, LlamaIndex, CrewAI, n8n, Make and Zapier Apify integrations.

### Pricing

Pay per result: one charge per output row. Errors aren't output, so they aren't charged. Use `maxResults` and `ruleFields`/filters to control cost; the whole 14-firm snapshot is 14 rows.

### FAQ

**How fresh is the data?** Each firm row has its own `checkedDate`, each source in `sources` has its own `checked` date, and `dataAsOf` is the snapshot date (latest check). Snapshots are refreshed manually from the PropFirm Ledger.

**Why are some prices null?** The firm didn't publish that price on a readable public page when it was checked. We never fill unknowns with zero or guesses.

**Why doesn't the price match the firm's checkout?** We store list prices. Firms run promos constantly, so checkout may be lower.

**Do you cover forex or crypto prop firms (FTMO, The5ers...)?** Not yet. This feed is futures-only.

**Are the Reddit denial stories facts?** No. They're anecdotal and excluded unless you opt in, and they're clearly labeled.

**How much does a run cost?** $0.01 per row. All 14 firms cost $0.14, and a 3-firm comparison costs $0.03. Invalid inputs produce no rows and aren't charged.

**Can I get only new rule changes on a schedule?** Yes. Schedule `mode: "changes"` with `changesSince` set to your last run date.

**Which firms have no verified data?** Funding Futures (its site was unreachable when checked). Its row says `dataStatus: "no verified data (unknown)"` and has null fields.

**Do you scrape firm sites live?** No. Runs read a bundled, dated snapshot, so they're fast and deterministic. `dataAsOf` tells you the snapshot date.

**Is this a recommendation of any firm?** No. It's informational only. There are no affiliate links and no ranking.

**Where can I browse this as a web page?** On the [PropFirm Ledger](https://pscharrjr-bot.github.io/propfirm-ledger/).

*Informational only, not financial or trading advice. Verify every detail with the firm.*

# Actor input Schema

## `mode` (type: `string`):

firms: one row per firm. compare: one row per firm plus a side-by-side COMPARISON table in the key-value store. changes: one row per logged rule change (use changesSince). denials: one row per documented payout-denial reason.

## `firms` (type: `array`):

Firm names or slugs, partial match, case-insensitive. Examples: Topstep, apex, tradeify, myfundedfutures, take-profit-trader, alpha-futures, fundednext-futures, bulenox, lumen, funderpro-futures, elite-trader-funding, earn2trade, tradeday, funding-futures. Leave empty for all 14 firms.

## `market` (type: `string`):

Market type. The current snapshot covers futures prop firms only; other markets return 0 rows with a warning.

## `ruleFields` (type: `array`):

Which rule groups to return on firm/compare rows: pricing (model, lowest eval and activation fee), plans (every size with eval, reset, activation fees), drawdown, consistency, payout, notes, changes (recent rule changes), denials (payout-denial reasons). Identity, conflicts, sourceUrl, checkedDate, dataAsOf and disclaimer are always included. Fewer groups = smaller rows for AI agents.

## `maxEvalPrice` (type: `integer`):

Keep only plans whose LIST evaluation price (USD) is at or below this. Example: 100. Unknown prices are kept only if 'Keep unknown values' is on.

## `accountSize` (type: `string`):

Keep only plans of this account size. Accepts 25K, 50K, 100K, 150K, 200K or a dollar number like 50000.

## `maxDrawdownAtLeast` (type: `integer`):

Keep plans whose max drawdown (maxDrawdownUsd, dollars) is at least this. Example: 2000. Unknown (null) drawdowns pass only if 'Keep unknown values' is on. Apex values are derived (safety net minus $100) and flagged.

## `maxProfitTarget` (type: `integer`):

Keep plans whose profit target (profitTargetUsd, dollars) is at most this. Example: 3000. Unknown (null) targets pass only if 'Keep unknown values' is on.

## `includeUnknown` (type: `boolean`):

Blank values are unknown (null), never zero. When on, plans with an unknown value still pass a filter and are listed in unknownForFilters. Turn off to keep only confirmed matches.

## `changesSince` (type: `string`):

YYYY-MM-DD. In 'changes' mode, return only rule changes on or after this date (newest first). In firm modes, trims recentChanges. Example: 2026-08-01.

## `includeAnecdotal` (type: `boolean`):

Payout-denial reasons from Reddit trader reports are excluded by default. Turn on to include them, labeled anecdotal: true.

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

Upper limit on output rows. Each row is one billable result.

## Actor input object example

```json
{
  "mode": "firms",
  "firms": [
    "topstep",
    "myfundedfutures"
  ],
  "market": "all",
  "ruleFields": [
    "pricing",
    "drawdown",
    "consistency",
    "payout"
  ],
  "maxEvalPrice": 100,
  "accountSize": "50K",
  "maxDrawdownAtLeast": 2000,
  "maxProfitTarget": 3000,
  "includeUnknown": true,
  "changesSince": "2026-08-01",
  "includeAnecdotal": false,
  "maxResults": 20
}
```

# Actor output Schema

## `results` (type: `string`):

Rows (overview view).

## `comparison` (type: `string`):

Field-by-firm table.

## `summary` (type: `string`):

Counts, warnings, dataAsOf.

# 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 = {
    "mode": "firms",
    "firms": [
        "Topstep",
        "Apex Trader Funding",
        "Tradeify"
    ],
    "ruleFields": [
        "pricing",
        "plans",
        "drawdown",
        "consistency",
        "payout"
    ],
    "accountSize": "",
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("xprm-llc/propfirm-rules-feed").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 = {
    "mode": "firms",
    "firms": [
        "Topstep",
        "Apex Trader Funding",
        "Tradeify",
    ],
    "ruleFields": [
        "pricing",
        "plans",
        "drawdown",
        "consistency",
        "payout",
    ],
    "accountSize": "",
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("xprm-llc/propfirm-rules-feed").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 '{
  "mode": "firms",
  "firms": [
    "Topstep",
    "Apex Trader Funding",
    "Tradeify"
  ],
  "ruleFields": [
    "pricing",
    "plans",
    "drawdown",
    "consistency",
    "payout"
  ],
  "accountSize": "",
  "maxResults": 20
}' |
apify call xprm-llc/propfirm-rules-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,xprm-llc/propfirm-rules-feed"
        }
    }
}
```

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/Cr9dVJgcdgQ59JBox/builds/IBR1utt6ubWd7vPaw/openapi.json
