Discover/Propfirmmatch API
live

Propfirmmatch APIpropfirmmatch.com

Access real-time proprietary trading firm challenge data including futures and forex opportunities, filter by your preferences, and browse available firms to find the perfect trading challenge. Get detailed information about challenge requirements, firm listings, and all available filtering options to streamline your search for the right prop trading opportunity.

Endpoint health
monitored
get_filtering_options
list_challenges
list_firms
Checks pendingself-healing
Endpoints
3
Updated
3h ago
Try it
Number of results to skip for pagination.
Number of results to return per page (1-100).
Comma-separated challenge step programs to filter by (e.g. '1 Step', '2 Step', '3 Step'). Omitted returns all programs.
Comma-separated asset classes to filter by (e.g. futures, forex, crypto).
Text search query to filter challenges by name or firm name. Omitted returns all.
Field to order results by.
Comma-separated account sizes in USD to filter by (e.g. 50000,100000,150000).
Comma-separated billing types: monthly, one_time.
Whether to apply available discounts to prices.
Sort direction for results.
api.parse.bot/scraper/b5c524ed-5dfc-40f6-8174-998da8752b14/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/b5c524ed-5dfc-40f6-8174-998da8752b14/list_challenges?skip=0&limit=10&steps=1+Step&assets=futures&search=lucid&order_by=popularityRank&account_size=50000&billing_type=monthly%2Cone_time&apply_discount=true&order_direction=desc' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace propfirmmatch-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: PropFirmMatch SDK — compare futures prop firm challenges."""
from parse_apis.propfirmmatch_com_api import (
    PropFirmMatch, OrderBy, OrderDirection, Category, InputFormatInvalid
)

client = PropFirmMatch()

# List all futures prop firms and their ratings.
for firm in client.firms.list(category=Category.FUTURES, limit=5):
    print(f"{firm.name} — score: {firm.review_score}, reviews: {firm.reviews_count}")

# Search challenges filtered by asset, account size, and step count.
challenge = client.challenges.search(
    assets=Category.FUTURES,
    account_size="50000",
    steps="1 Step",
    order_by=OrderBy.PRICE,
    order_direction=OrderDirection.ASC,
    limit=1,
).first()
if challenge:
    print(f"\nCheapest 50K 1-Step: {challenge.name}")
    print(f"  Price: ${challenge.discounted_price} (was ${challenge.price})")
    print(f"  Profit split: {challenge.profit_split}%, Max drawdown: {challenge.max_drawdown}%")
    print(f"  Platforms: {', '.join(challenge.platforms)}")
    if challenge.promos:
        promo = challenge.promos[0]
        print(f"  Promo: {promo.code} — {promo.description}")

# Get available filtering options to discover valid account sizes and limits.
options = client.filtering_optionses.get()
print(f"\nFilter limits: account size ${options.limits['accountSizeMin']}–${options.limits['accountSizeMax']}")
print(f"Platforms available: {len(options.platforms)}")
print(f"Countries supported: {len(options.countries)}")

# Demonstrate typed error handling.
try:
    client.challenges.search(limit=1, skip=-1).first()
except InputFormatInvalid as exc:
    print(f"\nValidation error: {exc}")

print("\nexercised: firms.list / challenges.search / filtering_optionses.get / InputFormatInvalid")
All endpoints · 3 totalmissing one? ·

Search and filter prop firm challenges (evaluation programs). Returns challenge data including pricing, profit targets, drawdown limits, payout info, and active promos. Supports filtering by asset class, account size, number of steps, billing type, and text search. Manual offset pagination via skip/limit.

Input
ParamTypeDescription
skipintegerNumber of results to skip for pagination.
limitintegerNumber of results to return per page (1-100).
stepsstringComma-separated challenge step programs to filter by (e.g. '1 Step', '2 Step', '3 Step'). Omitted returns all programs.
assetsstringComma-separated asset classes to filter by (e.g. futures, forex, crypto).
searchstringText search query to filter challenges by name or firm name. Omitted returns all.
order_bystringField to order results by.
account_sizestringComma-separated account sizes in USD to filter by (e.g. 50000,100000,150000).
billing_typestringComma-separated billing types: monthly, one_time.
apply_discountbooleanWhether to apply available discounts to prices.
order_directionstringSort direction for results.
Response
{
  "type": "object",
  "fields": {
    "count": "integer total matching challenges",
    "has_more": "boolean indicating more pages available",
    "next_skip": "integer skip value for next page",
    "challenges": "array of challenge objects with pricing, targets, drawdown, firm info, platforms, and promos"
  },
  "sample": {
    "data": {
      "count": 56,
      "has_more": true,
      "next_skip": 3,
      "challenges": [
        {
          "id": "yuhuqizaqg0v0tp7bu03mlg4",
          "name": "Lucid Trading - LucidPro 1-Step - 50K",
          "slug": "lucid-trading-lucidpro-1-step-50k",
          "price": 185,
          "steps": "1 Step",
          "promos": [
            {
              "code": "MATCH",
              "description": "40% off + No DLL on Pro accounts",
              "discount_amount": 40,
              "discount_strategy": "percentage"
            }
          ],
          "firm_name": "Lucid Trading",
          "firm_rank": 5,
          "firm_slug": "lucid-trading",
          "platforms": [
            "Tradovate",
            "Sierra Chart",
            "Bookmap"
          ],
          "pt_dd_ratio": 0.67,
          "account_size": 50000,
          "billing_type": "one_time",
          "max_drawdown": 4,
          "profit_split": 90,
          "max_loss_type": "EODTrailing",
          "max_daily_loss": null,
          "max_micros_size": "40",
          "consistency_rule": "- Evaluation stage: None\n- Funded stage: 40%",
          "discounted_price": 111,
          "payout_frequency": 3,
          "firm_review_score": 4.6,
          "max_contract_size": "4",
          "profit_target_sum": 6,
          "firm_reviews_count": 87,
          "minimum_trading_days": null,
          "activation_fee_amount": 0,
          "maximum_payout_amount": "$2,000",
          "minimum_payout_threshold": "$500",
          "payout_frequency_description": "Every 3 Days"
        }
      ]
    },
    "status": "success"
  }
}

About the Propfirmmatch API

The Propfirmmatch API on Parse exposes 3 endpoints for the publicly available data on propfirmmatch.com. Calls return JSON over HTTPS and are billed per successful response.

Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.