Prop Firm Match APIpropfirmmatch.com ↗
Access prop trading firm challenge data from Prop Firm Match via 3 endpoints. Filter futures and forex challenges by account size, steps, billing type, and more.
What is the Prop Firm Match API?
The Prop Firm Match API exposes 3 endpoints covering prop trading firm challenges and firm listings sourced from propfirmmatch.com. The list_challenges endpoint returns detailed challenge objects including pricing, profit targets, drawdown limits, payout structures, and active promotions, with support for filtering by asset class, account size, step count, and billing type. Together, the endpoints let developers build comparison tools, aggregators, or alert systems against the full prop firm challenge landscape.
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&economic_news=allowed&apply_discount=true&order_direction=desc' \ -H 'X-API-Key: $PARSE_API_KEY'
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")
Search and filter prop firm challenges (evaluation programs). Results are deduplicated by program — each distinct challenge program appears once with a pricing_by_size array showing all available account sizes and their prices. Returns pricing, profit targets, drawdown limits, payout info, active promos, and optionally news_trading_status. Supports filtering by asset class, account size, number of steps, billing type, text search, and economic news trading policy. Manual offset pagination via skip/limit.
| Param | Type | Description |
|---|---|---|
| skip | integer | Number of results to skip for pagination. |
| limit | integer | Maximum number of distinct challenge programs to return (1-50). |
| steps | string | Comma-separated challenge step programs to filter by (e.g. '1 Step', '2 Step', '3 Step', 'Instant'). Omitting returns all step types. |
| assets | string | Comma-separated asset classes to filter by (e.g. futures, forex, crypto, stocks). |
| search | string | Text search query to filter challenges by name or firm name. Omitted returns all. |
| order_by | string | Field to order results by. |
| account_size | string | Comma-separated account sizes in USD to filter by (e.g. 50000,100000,150000). Omitted returns challenges at all account sizes. |
| billing_type | string | Comma-separated billing types to filter by: monthly, one_time. The default 'monthly,one_time' returns all challenges including those with no billing type set. |
| economic_news | string | Filter challenges by economic news trading policy. 'allowed' returns challenges where news trading is fully allowed, 'not_allowed' returns challenges where news trading is prohibited, 'restricted' returns challenges where news trading is allowed but with restrictions (e.g. no trading around Tier 1 events). |
| apply_discount | boolean | Whether to apply available discounts to prices. |
| order_direction | string | Sort direction for results. |
{
"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, promos, pricing_by_size (all available account sizes with prices), and optionally news_trading_status when economic_news filter is active"
},
"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 Prop Firm Match API
Challenge Data
The list_challenges endpoint is the core of this API. Each challenge object in the response carries pricing details, profit targets, drawdown limits, payout information, supported trading platforms, and active promotional codes. You can narrow results using the assets parameter (e.g. futures, forex, crypto), steps (e.g. 1 Step, 2 Step), account_size (comma-separated USD values like 50000,100000), and billing_type (monthly or one_time). A search parameter filters by firm or challenge name. Pagination is handled manually via skip and limit; the response returns count, has_more, and next_skip to walk through pages.
Firm Listings
The list_firms endpoint returns all firms in a given category in a single call — no pagination needed. Each firm object includes the firm's id, name, slug, review_score, reviews_count, and likes (popularity count). This is useful for building firm directories or populating dropdown filters in a challenge comparison UI.
Filter Options
The get_filtering_options endpoint returns metadata that supports building dynamic filter interfaces. It provides arrays of firms with their challenge counts, trading platforms with occurrence counts, supported countries, and tradable instruments. It also returns a limits object containing min/max bounds for numeric fields like account size, drawdown percentages, and profit split ranges — useful for rendering range sliders or validating filter inputs before querying list_challenges.
The Prop Firm Match API is a managed, monitored endpoint for propfirmmatch.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when propfirmmatch.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official propfirmmatch.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a side-by-side challenge comparison table filtered by account size and drawdown limits
- Track active promotional codes across prop firm challenges for a coupon or deal aggregator
- Populate a firm directory with review scores and popularity data from list_firms
- Send alerts when new futures or forex challenges appear matching a user's step and billing preferences
- Render dynamic filter UIs using min/max bounds and platform occurrence counts from get_filtering_options
- Aggregate profit target and payout data across all 1-Step challenges for a research dataset
- Match traders to eligible challenges by filtering on supported countries returned in filter options
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Prop Firm Match have an official developer API?+
What fields does list_challenges return for each challenge?+
How does pagination work in list_challenges?+
skip integer to move through result pages and a limit between 1 and 100 to control page size. The response returns has_more (boolean) and next_skip (integer) so you can determine whether to fetch another page and what offset to use.Does the API return individual challenge reviews or trader comments?+
list_firms, but individual user reviews or written comments are not exposed. You can fork the API on Parse and revise it to add an endpoint targeting per-challenge or per-firm review detail.