FCS Forex API
FCS Forex API v4 — supported by multiple live forex data sources. FCS API delivers live rates for 170+ countries and 4,000+ currency pairs. It provides real-time and historical FX prices, endpoints for selected or all currency pairs, and technical indicators from 1-minute to 1-month intervals. Whether you need a free API for testing or a reliable feed for trading, FCS API offers accurate and dependable forex data and market insights.
API Request Credit UsageMost API endpoints cost 1 credit per request. Some endpoints (Latest, Profile, History) count credits per 100 records returned. The Basic plan includes 10,000 requests per month. Credits are charged only for successful (HTTP 200) responses.
Start with our Quick Start to get up and running in minutes.
- Only Latest price API, Candle API, Profile API count 1 credit per 100 record return.
- Request count only when response code is {200} and return some record.
- If API endpoints that return an error or empty responses are not count in request.
- You can login in your dashboard to check your usage.
- Credit refresh each month of your billing date.
- Use bulk requests (multiple symbols) to optimize credit usage
- Cache responses for non-critical applications
- Handle rate limits gracefully with exponential backoff
- Always check the status field before processing data
- Send API request in POST method
Get Started
Quickly integrate the FCS Forex API for real-time and historical rates. Use any language (PHP, JavaScript, Java, C#, etc.). Responses are JSON for easy parsing; try the cURL example below to fetch the latest EURUSD rate.
Follow these 3 quick steps to start using the FCS Forex API.
Step 1: Get Your API Key
Sign up and get your API key instantly. Free plans available for testing.
Step 2: Try a Simple cURL Request
Run this command (replace YOUR_API_KEY):
curl "https://api-v4.fcsapi.com/forex/latest?symbol=EURUSD&access_key=YOUR_API_KEY"Step 3: Integrate in Your App
Use the JSON response in your application. Toggle parameters like symbol, period, and exchange to fetch the data you need.
After registration, find your API key in the dashboard under "API Keys" section. Keep it secure and never expose it in client-side code.
Parameters List
| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY |
| This is a required parameter for all API requests. It's your unique access key used to authenticate and authorize your request. You can find your API key in your dashboard after registration. Alternative Authentication: If you have a static IP address, you can whitelist it in your Account → Profile → IP Whitelist section to make requests without the access_key parameter. | ||
| typeoptional | string | Data type filter: forex, commodity |
| Filter results by specific asset type. When you want data for a specific type of financial instrument, use this parameter to narrow down results. Default: null (returns all types) Valid Values: forex, crypto, coin, futures,dex, commodity Example: If you set type=forex, the API will only return forex currency pairs. If type=crypto, only cryptocurrency pairs will be returned. Use Case: Perfect for applications that focus on specific markets or when you want to avoid mixing different asset types in your results. | ||
| sub_typeoptional | string | Default:spot, Filter: spot,synthetic |
| Spot are normal symbols driven from exchanges synthetic It is self generated symbol that is not listed on any exchange by using formula | ||
| symboloptional | string | Currency pairs or asset symbols (comma-separated for multiple) |
| Specify which currency pairs or financial instruments you want data for. You can request single or multiple symbols in one API call. Formats Supported: • Standard: EURUSD, GBPJPY, BTCUSD • Exchange-specific: ONA:EURUSD, SFO:GBPUSD • Multiple symbols: EURUSD,GBPUSD,USDJPY Finding Valid Symbols: Use our Symbols List API to get all available symbols for your data. | ||
| periodoptional | string | Default:1D, Candle Time Period |
| Specifies the timeframe for Lates / historical data, candlestick charts, and technical analysis. Default: 1D (daily) Valid Values (Minutes): 1, 5, 15, 30, 60, 120, 240, 300, 1440, 10080, 43200 Valid Values (Text Format): 1m, 5m, 15m, 30m, 1h, 2h, 4h, 5h, 1d, 1w, 1M Data Availability: Shorter timeframes have limited historical depth (typically 1-24 months), while daily and higher timeframes go back several years. Maximum previous 10K candles in history | ||
| exchangeoptional | string | Specific exchange or data feed source name |
| Filter results to show data from a specific exchange or price feed provider. Useful when you need prices from a particular source for consistency. Popular Exchanges: • Forex: ONA, SFO, FCM and see 10+ more Get List • Crypto: Binance, Coinbase, Kraken, Bitfinex (used in crypto API) Default Behavior: When not specified, returns aggregated data from multiple sources Or First Available exchange. Use Cases: Regulatory compliance, specific broker integration, price comparison across exchanges. | ||
| searchoptional | string | Search within currency pair names or symbols |
| Search within currency pair names or symbols. Accepts partial matches for quick symbol lookup. Examples: • search=EUR → Find all EUR pairs (EURUSD, EURGBP, EURJPY) • search=USD → Find all USD pairs (USDJPY, USDCAD, GBPUSD) • search=gold → Find gold-related instruments Note: Use either `search` OR `symbol`, not both. | ||
| get_profileoptional | boolean | FALSE|TRUE (0|1) (return symbols extra details) |
| Controls whether to include detailed profile information about each financial instrument in the API response. Default: 0 Valid Values: 0, 1 Profile Information Includes: • Full instrument name • Country/region information • Asset type classification • Trading specifications • Decimal precision Performance Tip: Set to false if you only need price data to reduce response size and improve speed, especially for bulk requests. | ||
| countryoptional | string | Filter by country code (ISO 2-letter format) |
| Used in Economy calendar. Filter results to show only instruments from specific countries or regions. Useful for compliance, regional focus, or regulatory requirements. Format: ISO 3166-1 alpha-2 country codes Examples: US, GB, DE, JP, AU, CA Use Cases: • Regulatory compliance (showing only domestic instruments) • Regional market analysis • Tax jurisdiction filtering • Time zone-based trading strategies | ||
| amountoptional | numeric | Amount to convert (for currency conversion endpoints) |
| Specifies the amount of currency to convert when using conversion endpoints. Default: 1 Valid Range: 0.01 to 999,999,999 Decimal Support: Up to 8 decimal places Examples: • amount=100 (convert 100 units) • amount=1000.50 (convert 1000.50 units) • amount=0.01 (convert 0.01 units for crypto) Use Cases: Currency conversion calculators, payment processing, international transfers, portfolio valuation. | ||
| fromoptional | unixTime | Start date/time for historical price data |
| Defines the start date and time for historical data requests. Used in conjunction with the "to" parameter to specify date ranges. Supported Formats: • Date only: 2025-01-01, 2025-12-31 • Date with time: 2025-01-01T09:30, 2025-12-31T16:00 • Unix timestamp: 1735689600 (10 digit only) Time Zone: All times are in UTC Default Behavior: When not specified, returns the most recent available history data Historical Limits: • Forex: Up to 20+ years of daily data • Intraday: 1-24 months depending on timeframe • Crypto: Varies by exchange, typically 2-5 years • Maximum Recent 5-12K candles in any time period | ||
| tooptional | unixTime | End date/time for historical data queries |
| Defines the end date and time for historical data requests. Must be used together with the "from" parameter to create a valid date range. Supported Formats: • Date only: 2025-01-31, 2025-12-31 • Date with time: 2025-01-31T17:00, 2025-12-31T23:59 • Unix timestamp: 1738281600 Important Notes: • Must be after the "from" date • Cannot be in the future • Maximum range varies by timeframe Default: Current date/time when not specified Performance: Smaller date ranges return faster and use fewer API credits. | ||
| is_chartoptional | string | History Response for chart format |
| If you want to use history api directly in JS chart, Mostly JS chart support simple candle data format is_chart=0 response ["t":1738281600,"o":1.1,"h":1.2,"l":1.0","c":1.1,"v":150] is_chart=1 response [1738281600,1.1,1.2,1.0,1.1,150], Use is_chart=1 when you need specific JS chart history | ||
| mergeoptional | string | Merge multiple API in 1 respones values(latest, perf, tech, profile, meta) |
| We have different API endpoints, You can access all at one. Use in advance API endpoint. merge=latest,tech To get Active/Prev candle prices and technical indicators merge=latest,tech,perf To get Active/Prev candle prices and technical indicators with symbol performance | ||
| filtersoptional | json | Advanced filtering using JSON object |
| Advanced JSON object for range-based filtering. Format: {"column_operator": value}. Operators:
{"active.c_gt":1.1,"active.chp_between":"0.5,2"} → Currency pairs with price > 1.1 and change % between 0.5–2% {"active.v_gt":10000} → Pairs with volume > 10,000 {"profile.exchange_eq":"ONA"} → Only from ONA exchange Response also includes "filters" → {"applied": {...}, "ignored": [...]} for debugging. | ||
| sort_byoptional | column_name | Sort results by specific field or metric |
| Column name + direction to sort results. Format: {column_name}_{asc|desc}. Forex Examples: sort_by=active.chp_desc → Top gaining currency pairs (by % change) sort_by=active.v_desc → Most active pairs (by volume) sort_by=active.c_desc → Highest priced pairs sort_by=profile.name_asc → Alphabetical by currency pair name Note: Sorting works across merged APIs; use full path (active., profile., etc.) when columns overlap. | ||
| pageoptional | number | Pagination page number |
| Pagination page number (default: 1) | ||
| per_pageoptional | number | Number of records per page |
| Number of records per page. Default: 200 | Max: 5000 | ||
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) |
| Specifies the format of the API response. Choose the format that best fits your application's needs. Default: json Available Formats: • json - Standard JSON format (recommended) • jsonp - JSON with padding for cross-domain requests • serialize - Serialized string for legacy systems • csv - Comma-separated values for data analysis • array - PHP array format Content-Type Headers: • json: application/json • csv: text/csv Recommendation: Use JSON for modern applications, CSV for data analysis and Excel imports. | ||
Symbols List
You can access the complete list of supported currency short names and symbols using the API below. These symbols will allow you to fetch indicator values, historical trends, and real-time exchange rates. Our forex API endpoint is regularly updated, guaranteeing you always have the most up-to-date forex currencies in real time.
•API Return All symbols, You need to use these symbols in Latest Price API, Price conversation, Historical and for Technical signals.
•type=Forex to get all forex symbols.
•type=commodity to get all commodity symbols.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| typeoptional | string | Data type filter: forex, commoditymore |
| sub_typeoptional | string | Default:spot, Filter: spot,syntheticmore |
| exchangeoptional | string | Specific exchange or data feed source name more |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
API EXAMPLE
Latest Prices
The Latest Currency Rate API is extremely beneficial, ensuring you stay informed with up-to-date currency prices. Our Currency Conversion API enables you to retrieve one or multiple currency rates at once. You can get active/current candle OHLC and previous closed candle prices.
•We update the prices of each currency in every 30-60 seconds in JSON API.
•Support All Time periods.
•Support Active and Previous candle OHLC in all time frame.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| symboloptional | string | Currency pairs or asset symbols (comma-separated for multiple) more |
| periodoptional | string | Default:1D, Candle Time Period more |
| exchangeoptional | string | Specific exchange or data feed source name more |
| get_profileoptional | boolean | FALSE|TRUE (0|1) (return symbols extra details) more |
| searchoptional | string | Search within currency pair names or symbols more |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
| moreoptional | string | Also support sort_by, pagination,etc check our Advance api |
API EXAMPLE
symbol=ONA:EURUSD,FX:USDJPY,NZDJPY
&period=1D&access_key=API_KEY
NZDJPY from all exchangessymbol=ONA:EURUSD,ONA:USDJPY,FX:EURUSD,FX:USDJPY
period=1D
&get_profile=1
&access_key=API_KEY
We accept all methods GET/POST/JSON
{
"type": "forex",
"sub_type": "spot",
"symbol":"EURUSD,USDJPY",
"exchange": "ONA,FX",
"period": "1d",
"get_profile": 1,
"per_page": "20",
"access_key": "API_KEY"
}Response Format
Response Fields
o- Open priceh- High pricel- Low pricec- Current/Close pricet- Candle Open Unix timestampa- Ask Priceb- Bid Pricev- Volumevw- Volume weighted average pricech- Change amountchp- Change percentageupdate- Last Price update timebase_id- if base_id is same for multiple symbols. They are belong to same group
Mini Sample Response
{
"active": {
"o": 1.16153,
"h": 1.16256,
"l": 1.16128,
"c": 1.16192,
"v": 3182,
"t": 1756155600,
"vw": 1.16808,
"ch": 0.00039,
"chp": 0.034
},
"profile": {
"id": "165558",
"symbol": "EURUSD",
"exchange": "FX",
"name": "EURO / U.S. DOLLAR",
"type": "forex",
"sub_type": "",
"currency": "USD",
"country": "",
"base_id": "EU"
},
"more": {
".....": "4000+ more currency prices"
}
}- If you need to use Multiple API at same time, Use bulk requests (multiple/parallel)
- Cache responses for non-critical applications
- Handle rate limits gracefully with exponential backoff
- Always check the status field before processing data
Commodities
We provide commodity market data for precious metals, energies, and base metals. To request commodities from any endpoint, pass type=commodity. Example symbols include Gold (XAUUSD), Silver (XAGUSD), Crude Oil (USOIL / WTI), Brent (BRENT), Natural Gas (NGAS), Copper, and Platinum. Use the Symbols List API to find exact tickers available on the platform.
Add type=commodity to any existing endpoint (Latest, History, Profile, etc.) to filter results to commodity symbols. Examples below show common commodity requests — there is no separate commodities-only endpoint.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| symboloptional | string | Currency pairs or asset symbols (comma-separated for multiple) more |
| periodoptional | string | Default:1D, Candle Time Period more |
| typeoptional | string | Data type filter: forex, commoditymore |
| exchangeoptional | string | Specific exchange or data feed source name more |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
API EXAMPLE
Response Format
Response Fields
o- Open priceh- High pricel- Low pricec- Current/Close pricet- Candle Open Unix timestamp
Mini Sample Response
{
"ticker": "XAUUSD",
"update": 1765318304,
"active": {
"o": 2500,
"h": 2530,
"l": 2498.5,
"c": 2523.1,
"t": 1765317600
}
}- Use
type=commoditywhen requesting commodities from any endpoint - Check the Symbols List API for exact commodity tickers and exchange coverage
- Use History API for multi-day OHLC analysis of commodity prices
- Cache commodity quotes for dashboards to reduce credit usage
Currency Converter
In our Currency API, price conversion is an essential function that enables you to exchange between two chosen currencies. To achieve this, simply include the symbols parameter along with the amount you wish to convert. Our Currency Exchange API ensures a seamless and efficient conversion process.
This endpoint accepts only one currency pair per request — use pair1 and pair2 (e.g., pair1=EUR&pair2=USD).
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| pair1*required | string | Currency From (e.g. EUR) |
| pair2*required | string | Currency To (e.g. USD) |
| amountoptional | numeric | Amount to convert (for currency conversion endpoints) more |
| typeoptional | string | Data type filter: forex, commoditymore |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
API EXAMPLE
Response Format
Response Fields
total- Total 10 EUR convert to USDprice_1x_EUR- 1 USD price to EURprice_1x_USD- 1 EUR price to USD
Mini Sample Response
{
"total": "11.7362",
"price_1x_EUR": "0.85206",
"price_1x_USD": "1.17362",
"more": "10 EUR into USD"
}- Some symbols exist in both Forex and Crypto (e.g. PKRUSD same symbol in forex and crypto = Pakistani Rupee/USD and Polker/USD).
- Use
type=forexto get currency data, ortype=cryptoto get token data. - Do not use
type— When converting between crypto and fiat (e.g.pair1=BTC&pair2=JPY), the system will auto-detect and convert.
Base Currency
Single base currency, it will return all quote prices of all currencies. If direct currency pair not available e.g: we not have a INRBDT, system automatic derive from intermediate pairs (e.g., BDTUSD and INRUSD → INRBDT). Only last close price returned. For OHLC data please use our Latest Price API or Cross API.
e.g: You set USD and API will return USDEUR, USDNZD, USDBTC....
Symbol Only accept Currency name,
Correct Values: USD, JPY Wrong Values: USDJPY, USDNZD
response: If Enter symbol=USD, then return all currencies start with USD*
Quote: By default, we return the selected symbol with the base currency first. If you need the reverse pair (where your currency is the quote instead), you can calculate it manually. For example: if the API returns USDEUR, you can invert it to get 1/USDEUR =>EURUSD.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| symbol*required | string | Single currency code (e.g. USD) more |
| type*required | string | Accepts: forex or crypto more |
| exchangeoptional | string | Comma-separated exchange names; if not available, other exchanges may be used more |
| fallbackoptional | string | 0|1 — 0: default, return only selected exchange symbols; 1: fallback to other exchanges when missing. |
API EXAMPLE
Response Format
Response Fields
USDxxx- Price of currency pair with USD as base
Mini Sample Response
{
"base": "USD",
"USDAUD": 1.5343,
"USDBRL": 5.4736,
"USDCAD": 1.38208,
"USDCHF": 0.8055,
"USDEUR": 0.8587,
"more": "all prices with Base USD",
"info": {
"credit_count": 1
}
}Cross Currency
Return OHLC (open, high, low, close) and bid/ask data for all cross pairs of the given currency. For example, if you set symbol=USD, the API will return USDJPY, USDEUR, USDGBP, USDPKR, USDxxx and more.
•By default, the API returns pairs with the base currency first (e.g., USDEUR). To get the reverse pair (EURUSD), calculate it manually as 1/USDEUR.
•When using multiple symbols with crossrates=1, the API returns all pairwise cross rates between them (both directions). With crossrates=0 (default), it returns pairs starting with each provided currency.
About crossrates parameter: When crossrates=1 and you pass multiple single-currency symbols (for example symbol=USD,EUR,JPY), the API returns all pairwise cross rates between those currencies (both directions). Example pairs returned: USDEUR, EURUSD, USDJPY, EURJPY, JPYUSD, JPYEUR. When crossrates=0 (default), the API returns symbols that start with each provided currency (e.g. all symbols beginning with USD*, EUR*, JPY*).
•Cross Currency API provides derived OHLC data and may be less accurate compared to History and Latest endpoints. For most accurate prices, prefer Latest or History APIs when available.
•Symbol must be a single currency code, e.g. USD or EUR.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| symbol*required | string | Single Currency Name (USD,EUR,JPY) more |
| type*required | string | In this API, Accept forex/crypto only more |
| period*required | string | Time period for OHLC data, e.g., 1D for 1 day more |
| exchangeoptional | string | multiple exchange name, If symbol not available auto choose other exchange more |
| crossratesoptional | string | 0|1 (default 0). When 1 and multiple single-currency symbols provided, return all pairwise cross rates between them (both directions). When 0 returns symbols that start with each provided currency. |
| fallbackoptional | string | 0|1 => Work with exchange, If 0: (default) return only selected exchanges symbols, If 1: if currency in selected exchange not found, it will be return from other exchange. |
API EXAMPLE
symbol=USD
&type=forex
&period=1D
&exchange=FX,SFO
&access_key=API_KEY
Historical Price API
If you're looking to compare current exchange prices with past rates to watch the market trends, our Forex History API offers comprehensive historical exchange data for all supported symbols. For most symbols, historical prices are available starting from 1995, with data in 1-day or higher time frames.
Historical data available from 1999 for major pairs. Intraday data (1m, 5m, etc.) available for up to 2 years. You can also access 1-minute, 5-minute, and other short-term data for up to 6 months. Smaller time periods have less data (typically up to 8-10K candles).
History limits by plan
Free: up to 300 candles (when using length without from/to).
Starter: up to 1000 candles (no from/to).
Professional: up to 3500 candles (no from/to).
Advanced & Corporate: up to 10000 candles
Note: These limits apply to simple length-based requests (no explicit from/to). Date-range queries may be further limited per plan. Requests that exceed your plan limits will return an informative error — contact support to upgrade or request bulk access.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| symbol*required | string | Single symbol only,(exchange_name:Symbol) E.g: NZDJPY or FCM:EURUSD more |
| periodoptional | string | Default:1D, Candle Time Period more |
| fromoptional | unixTime | Start date/time for historical price data more |
| tooptional | unixTime | End date/time for historical data queries more |
| lengthoptional | number | default: 300, 1-10000, If set 500, Will return 500 candles |
| pageoptional | number | Design to use in live chart when scroll more candles on chart more |
| is_chartoptional | string | Mostly JS chart support candle data in this format, [1756893600,1.16, 1.17,1.13,1.16,0] To get similar response, set is_chart=1 more |
API EXAMPLE
symbol=EURUSD
&from=2025-12-01
&to=2026-01-07
&period=1D
&access_key=API_KEY
symbol=EURUSD
&length=300&page=1
&access_key=API_KEY
Response Format
Response Fields
o- Opening priceh- Highest pricel- Lowest pricec- Closing pricev- Volumevw- Volume weighted average pricet- Unix timestamptm- Human readable time
Mini Sample Response
{
"1748815200": {
"o": 1.13479,
"h": 1.14495,
"l": 1.13476,
"c": 1.14363,
"v": 434204,
"vw": 1.144,
"t": 1748815200,
"tm": "2025-06-01 22:00:00"
}
}- Use appropriate time periods for your use case
- Limit date ranges to avoid large responses and time
- Cache historical data as it doesn't change
- Use length parameter to get more data in single request
Currency Profile Details
In our API, You can get all the details about Forex currencies. Details like its name, country name, bank name, currency unit, type of notes and more details.
This API provides detailed information about individual currencies, not currency pairs. Use currency codes like EUR, USD, GBP.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| symbol*required | string | Currency codes: EUR,USD,GBP more |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
API EXAMPLE
Response Format
Response Fields
short_name- Currency code (EUR, USD)name- Full currency namecountry- Country/regioncode_n- ISO numeric codesubunit- Smallest currency unitwebsite- Central bank websitesymbol- Currency symbolbank- Central bank namebanknotes- Available banknotescoins- Available coins
Mini Sample Response
{
"short_name": "EUR",
"name": "Euro",
"country": "Belgium",
"code_n": "978",
"subunit": "cent",
"website": "ecb.europa.eu",
"symbol": "€",
"bank": "European Central Bank",
"banknotes": "€5, €10, €20, €50, €100",
"coins": "1c, 2c, 5c, 10c, 20c, 50c, €1, €2"
}Exchange Coverage & Data Sources
Our Forex API aggregates data from 10+ premium exchanges and data feed providers worldwide. Get real-time coverage statistics and exchange details to choose the best data sources for your application.
View all forex exchanges and data providers we support.
• Exchange The exchange or data provider code
• Sub_type Additional classification or market type (if applicable)
• Total Symbols Number of currency pairs available from this exchange
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| typeoptional | string | Data type filter: forex, commoditymore |
| sub_typeoptional | string | Default:spot, Filter: spot,syntheticmore |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
Exchange Report Examples
Response Format
Response Fields
by_type- Summary statistics by data typeby_exchange- Detailed breakdown per exchangetotal_symbols- Total number of symbols availableno_of_exchanges- Total number of exchanges
- Real-time Data: Socket-supported provide real time price updates
- Global Coverage: 10+ exchanges across different regions and time zones
- Quality Assurance: All data sources are institutional-grade providers
- Redundancy: Multiple sources ensure high availability
- Specialized Markets: Regional exchanges offer unique currency pairs
Advanced Query API
(ALL IN ONE) The Advanced Query API is a powerful endpoint that combines multiple data sources and provides flexible filtering, sorting, and pagination capabilities. This unified API allows you to retrieve forex data with advanced customization options, making it perfect for complex trading applications and data analysis.
•Flexible column selection and filtering
•Multi-API data merging (latest, profile,meta, performance, technical indicators)
•Advanced search and symbol combination
•Pagination and sorting capabilities
•Dynamic exchange-symbol mapping, Sort and Filter
Extra: Sort_by, filter, search required Professional plan or higher.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| columnsoptional | string | Comma-separated column names to return (empty = all columns)(case-sensitive) |
| keep_parent_colmoptional | string | 0|1 - Work with columns parameter. 0: flatten array, 1: keep nested structure |
| symboloptional | string | Currency pairs or asset symbols (comma-separated for multiple) more |
| typeoptional | string | Data type filter: forex, commoditymore |
| sub_typeoptional | string | Default:spot, Filter: spot,syntheticmore |
| periodoptional | string | Default:1D, Candle Time Period more |
| exchangeoptional | string | Specific exchange or data feed source name more |
| filtersoptional | json | JSON/Array object for range filtering. Format: {"column_operator": value} more |
| sort_byoptional | column_name | Sort format: column_asc or column_desc, Colum name is case sensitive more |
| mergeoptional | string | Merge APIs: latest,perf, tech,profile, meta (comma-separated) more |
| pageoptional | number | Page number for pagination (default: 1) more |
| per_pageoptional | number | Records per page (default: 200, max: 5000) more |
| searchoptional | string | Search in names, Please check search api below for details more |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
API EXAMPLE
POST/RAW JSON both accepted
{
"symbol":"FX:EURUSD,SFO:JPYUSD", // EXCHANGE:SYMBOL
"exchange":"", // return data from specific exchange
"type":"forex", // forex
"sub_type":"spot", // spot,synthetic
"period":"1d", // 1m,5m, to 1month
"columns":"", // return specific columns/All
"keep_parent_colm":0, //(0|1) work with columns
"filters":{"active.c_gt":1}, // range filter
"sort_by":"active.chp_desc", // columnname_asc /desc
"merge" :"latest,perf,tech,profile,meta", // merge other api
"page":1,
"per_page":"50", //
"search":"", // search and symbol will not work together
"access_key":"API_KEY"
} We have mention all support fileds, Just Copy N paste in raw methods or PostMan for quick testing. You can play with param values to see different results. - _gt: Greater than | _lt: Less than
- _gte: Greater than or equal | _lte: Less than or equal
- _eq: Equal to | _between: Between two values "min,max"
- Example: {"c_gte": 1.15, "chp_between": "1,50", "volume_gt": 1000}
To confirm your filters are applied correctly, check the
"filters" field in the API response. It displays which filters were applied and which were ignored. Example:
"filters":{"applied":{"active.c_gt":"1.10"},"ignored":[]} means the filter active.c_gt ≥ 1.10 was successfully applied. Additionally, the
"sort_by" field shows if sorting was applied (e.g. "sort_by":"active.chp_desc" for top gaining pairs). Sorting API Guide (Top Gainers, Losers, Movers)
The Gainer/Loser API is built on our Advanced API framework, specifically optimized for identifying top-performing and worst-performing currency pairs. You can sort results of by using Advanced API by using simple sorting parameters. This allows you to fetch Top Gainers, Losers, Most Active by Volume, or Highest by Value without a separate endpoint. Just append the column name with `_asc` or `_desc`.
Sort Parameter Guide:
Format: {column_name}_{direction} where direction is asc (ascending) or desc (descending).
• Column names are case-sensitive and must match exactly as they appear in the API response
• Only columns present in the response can be used for sorting
• Examples: chp_desc (top gainers), chp_asc (top losers), v_desc (highest volume), c_asc (lowest price)
Attach `sort_by` parameter with column name + `_asc` (ascending) or `_desc` (descending).
Example: `sort_by=chp_desc` will give you the highest gainers first.
What is chp_desc?: In our latest price api we return change % column name as "chp" so you need to use column name that is "chp" in our case, and extend with "_desc" = chp_desc.
Similar if you want to get High price currency first use "?sort_by=c_desc" here c is "close" price
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| typeoptional | string | Data type filter: forex, commoditymore |
| symboloptional | string | Currency pairs or asset symbols (comma-separated for multiple) more |
| exchangeoptional | string | Specific exchange or data feed source name more |
| sort_byoptional | column_name | column name with "_desc"/"_asc" to sort any column more |
| moreoptional | string | All forex/advance filters supported. Combine `sort` with conditions like `limit=20` for best results. |
API EXAMPLE
Get top performing forex pairs from FX exchange in the last hour, and return only active candle not previous
{
"type": "forex",
"sub_type": "spot",
"symbols":"",
"exchange": "FX",
"period": "1h",
"columns": "",
"keep_parent_colm": 0,
"sort_by": "active.chp_desc", // Sort by Change % DESC
"filters": {},
"merge": "latest,profile", // return latest prices and profile
"per_page": "20", // limit reponse by 20 result only.
"access_key": "API_KEY"
}- Use `sort_by=chp_desc` for Top Gainers and `chp_asc` for Top Losers.
- Use `sort_by=v_desc` to get most active symbols.
- Always pair sorting with `per_page` to optimize API usage.
To check if your sorting is applied correctly, you can look at the "sort_by" field in the API response. It shows which column was used for sorting and the direction (asc or desc).
Example: "sort_by":"chp_desc" means the results are sorted by change percentage in descending order. and also check "sort_result":"success" means sort applied successfully.
Moving Average API (EMA & SMA)
The Moving Average API provides calculated Exponential Moving Average (EMA) and Simple Moving Average (SMA) values for multiple time periods. This helps traders and developers analyze short-term and long-term market trends using reliable forex technical indicators. You can easily integrate these signals into trading bots, charting tools, or algorithmic strategies.
• Get both EMA (Exponential Moving Average) and SMA (Simple Moving Average) values.
• Multiple intervals supported: 10, 25, 100, 200 (default).
• Includes signal strength, score, and market sentiment summary.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| symboloptional | string | Currency pairs or asset symbols (comma-separated for multiple) more |
| periodoptional | string | Default:1D, Candle Time Period more |
| exchangeoptional | string | Specific exchange or data feed source name more |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
| moreoptional | string | Supports bulk queries, pagination, and advanced filtering. Check our Advanced API. |
API EXAMPLE
{
"type": "forex",
"symbols": "EURUSD,USDJPY",
"exchange": "FX",
"period": "1d",
"access_key": "API_KEY"
}Response Format
Response Fields
signal- Summary of overall MA trendsignal.summary- WEAK_BUY/STRONG_BUY/BUY and same for SELLsignal.score- Numeric score showing strength of trend (-100 to 100)signal.trend- WEAK,MODERATE, STRONGsignal.confidence- Signal confidence: HIGH, MEDIUM, LOWma_avg- Contains all (EMA & SMA)ema10.v- EMA Valueema10.s- EMA Signalema10.n- EMA Nameema10.score- EMA Signal strength score -100 to 100
Mini Sample Response
{
"signal": {
"summary": "WEAK_SELL",
"score": -23,
"confidence": "LOW",
"trend": "WEAK",
"volatility": "LOW"
},
"ma_avg": {
"ema10": {
"v": 1.16496,
"s": "Neutral",
"n": "EMA 10",
"score": 0
},
"ema25": {
"v": 1.16524,
"s": "Neutral",
"n": "EMA 25",
"score": 0
}
}
}- Use higher period (100, 200) for trend analysis and smaller (10, 25) for entry/exit signals.
- Combine EMA & SMA values with other technical indicators (RSI, MACD) for stronger signals.
- Cache results for heavy requests to reduce API usage.
- Always validate confidence & score before executing trades.
Technical Indicators API
The Technical Indicators API provides a comprehensive set of popular technical indicators and Oscillator indicators including RSI, MACD, Stochastic, and more. Get precise indicator values for your trading strategies and analysis.
• Real-time calculation of top oscillators (RSI, MACD, Stochastic, ADX, ATR, Ultimate Oscillator, PSAR).
• Volatility insights including ATR % and Bollinger Band squeeze detection.
• Price action metrics such as candlestick body/shadow sizes and bullish/bearish pattern detection.
• Unified signal summary with trend, score, volatility, and confidence.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| symboloptional | string | Currency pairs or asset symbols (comma-separated for multiple) more |
| periodoptional | string | Default:1D, Candle Time Period more |
| exchangeoptional | string | Specific exchange or data feed source name more |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
| moreoptional | string | Supports bulk queries, pagination, and advanced filtering. Check our Advanced API. |
API EXAMPLE
{
"type": "forex",
"symbols": "EURUSD,USDJPY",
"exchange": "FX",
"period": "1d",
"access_key": "API_KEY"
}Response Format
Response Fields
summary- WEAK_BUY/STRONG_BUY/BUY and same for SELLscore- Strength score (-100 to 100)
-100:StrongSell,+100 StrongBuyconfidence- HIGH, MEDIUM, LOWtrend- (Strong, Weak, Neutral)volatility- Volatility metricsvolatility.atr_per- ATR % of pricevolatility.true_range- ATRvolatility.level- Volatility classificationbollinger- Bollinger Bands analysisbollinger.width_per- Band width %bollinger.pos_per- Position band %bollinger.middle- Middle line valuebollinger.squeeze- Squeeze detectionprice_action- Candle/Pattern metricsp.body_size- Candle body sizep.shadow_u- Upper shadowp.shadow_l- Lower shadowp.body_range_per- Body-to-range percentagep.c_type- Type (Bullish/Bearish)p.pattern- Pattern (Normal, Doji, etc.)oscillators.rsi- Relative Strength Index (RSI)rsi.v- Indicator Valuersi.s- Indicator Signalrsi.n- Indicator Namersi.scrore- Signal Strengthmore- Same For all oscillators
Mini Sample Response
{
"ticker": "FCM:EURUSD",
"signal": {
"summary": "BUY",
"score": 48.6,
"confidence": "LOW",
"trend": "WEAK",
"volatility": "LOW"
},
"indicators": {
"volatility": {
"atr_per": 0.663,
"true_range": 0.00739,
"level": "Low"
},
"bollinger": {
"width_per": 1.097,
"pos_per": 50.78,
"middle": 1.16502,
"squeeze": "Squeeze"
},
"price_action": {
"body_size": 0.00203,
"shadow_u": 0.00213,
"shadow_l": 0.00323,
"body_range_per": 27.47,
"c_type": "Bullish",
"pattern": "Normal"
}
},
"oscillators": {
"rsi": {
"v": 49.2919,
"s": "Neutral",
"n": "RSI",
"score": 0
},
"stoch": {
"v": 43.9802,
"s": "Sell",
"n": "STOCH K%",
"score": -25
},
"macd": {
"v": 0.0008076,
"s": "Sell",
"n": "MACD Level",
"score": -25
}
}
}- Use multiple indicators together (RSI + MACD + Bollinger) for stronger signals.
- Do not rely on a single indicator for trading decisions.
- Cache responses where possible to reduce credit usage.
- Always check the signal confidence before applying indicators to live strategies.
Pivot Points API
The Pivot Points API delivers key support and resistance levels calculated from multiple pivot point methods. These levels are widely used in forex and stock markets for intraday trading, trend confirmation, and setting stop-loss or take-profit targets. Supported methods include Classic, Fibonacci, Camarilla, Woodie, and Demark.
• Provides multiple pivot calculation methods in a single API call.
• Returns support (S1, S2, S3) and resistance (R1, R2, R3) levels.
• Includes Demark pivots (different calculation method).
• Useful for day traders and strategy automation.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| symboloptional | string | Currency pairs or asset symbols (comma-separated for multiple) more |
| periodoptional | string | Default:1D, Candle Time Period more |
| exchangeoptional | string | Specific exchange or data feed source name more |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
| moreoptional | string | Supports bulk queries, pagination, and advanced filtering. Check our Advanced API. |
API EXAMPLE
{
"type": "forex",
"symbols": "EURUSD,USDJPY",
"exchange": "FX",
"period": "1d",
"access_key": "API_KEY"
}- Use pivot points for intraday support and resistance zones.
- Combine pivot levels with oscillators (RSI, MACD) for confirmation.
- Check multiple methods (Classic + Fibonacci + Camarilla) for stronger levels.
- Always align pivot calculations with your trading timeframe (1h, 4h, 1D).
Performance Analysis API
Comprehensive performance analytics for currency pairs including historical highs/lows, percentage changes across multiple timeframes, and volatility metrics. Essential for fundamental analysis, portfolio management, and risk assessment of forex instruments.
•Historical Highs/Lows: 1M, 3M, 6M, 52W periods
•Performance Changes: 1W, 1M, 3M, 6M, YTD, 1Y, 5Y, All-time
•Volatility Analysis: Daily, Weekly, Monthly calculations
•All-time Records: Highest and lowest historical prices
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| symboloptional | string | Currency pairs or asset symbols (comma-separated for multiple) more |
| periodoptional | string | Default:1D, Candle Time Period more |
| exchangeoptional | string | Specific exchange or data feed source name more |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
API EXAMPLE
Response Format
Response Fields
H1M/L1M- 1-month high / low pricesH3M/L3M- 3-month high / low pricesH6M/L6M- 6-month high / low pricesH52/L52- 52-week high / low pricesHIGHEST/LOWEST- All-time high/lowPW- Performance - 1 week (%)P1M- Performance - 1 month (%)P3M- Performance - 3 months (%)P6M- Performance - 6 months (%)PY- Performance - year (%)PYTD- Performance - Year to dateP5Y- Performance - 5 years (%)PAll- Performance - All time (%)voltD- Daily volatility %voltW- Weekly volatility %voltM- Monthly volatility %
Mini Sample Response
{
"H1M": 1.17428,
"L1M": 1.15276,
"H3M": 1.18299,
"L3M": 1.13717,
"H6M": 1.18299,
"L6M": 1.07332,
"H52": 1.18299,
"L52": 1.01775,
"HIGHEST": 1.60381,
"LOWEST": 0.95361,
"PW": 0.0360736,
"P1M": 0.527797,
"P3M": 2.00122,
"P6M": 8.00406,
"PYTD": 12.489,
"PY": 5.19943,
"P5Y": -1.72676,
"PAll": -1.78973,
"voltD": 0.418582,
"voltW": 0.567319,
"voltM": 0.664304
}Economic Calendar API
Get real-time economic events and indicators as they are announced. See the immediate impact of global markets, including past, forecast, and actual figures for major economic events.
Economic events from major economies including US, EU, UK, Japan, Canada, Australia and more. Events include GDP, inflation, employment, central bank decisions.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| symboloptional | string | Filter by currency: USD,EUR,GBP more |
| countryoptional | string | Filter by country: US,GB,DE more |
| fromoptional | unixTime | Start date/time for historical price data more |
| tooptional | unixTime | End date/time for historical data queries more |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
API EXAMPLE
Response Format
Response Fields
event- Event code identifiertitle- Event title/nameindicator- Economic indicator namecountry- Country codecurrency- Currency affectedimportance- Event importance (0-3)actual- Actual released valueforecast- Forecasted valueprevious- Previous period valuedate- Event date and time
Mini Sample Response
{
"id": 326627,
"event": "JPRSMM",
"title": "Retail Sales MoM",
"country": "JP",
"currency": "JPY",
"importance": 0,
"actual": "",
"forecast": "",
"previous": -0.4,
"date": "2023-08-30 23:50:00"
}Search API
This API is like website search. You can search all currencies with similar names. It will search in currency full name and short name.
Search by symbol name, full name, exchange, or currency type. Supports pagination and filtering by exchange or type.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| search*required | string | Search term more |
| exchangeoptional | string | Filter by exchange more |
| typeoptional | string | Filter by type: forex,crypto more |
| metaoptional | string | (0|1), Return profile meta info, It will call profile meta info api inside and +1 credit |
| pageoptional | number | Page number for pagination more |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
API EXAMPLE
Response Format
Response Fields
id- Unique symbol IDsymbol- Symbol namename- Full instrument nametype- Asset type (forex, crypto,coin,stock)exchange- Exchange/provider namecountry- Country codebulk_support- Bulk API support (1/0)
Mini Sample Response
{
"id": "1292",
"symbol": "AUDCNH",
"name": "Australian Dollar / Chinese Yuan",
"type": "forex",
"sub_type": "-",
"currency": "CNH",
"exchange": "CAPITALCOM",
"country": "CN",
"base_id": "AU",
"bulk_support": "1"
}Multiple URL Requests
When you need to access multiple API endpoints simultaneously, it can be time-consuming. You can write custom code to send parallel API requests or simply use this API for a faster solution. For example, if you're calling 10 APIs and each takes 2 seconds, that adds up to 20 seconds. This API can retrieve all 10 results in just 2 seconds!
Execute multiple API calls in parallel instead of sequential requests. Significantly reduces total response time for multiple endpoint calls.
Parameters
Advance API Builder| Parameter | Type | Description |
|---|---|---|
| access_key*required | string | Authentication API KEY more |
| baseoptional | string | Common URL base |
| url[]*required | string | Array of API endpoints |
| outputoptional | string | Response format type (json, jsonp, serialize, csv, array) more |
API EXAMPLE
?url[1]=forex/latest?symbol=EURUSD
&url[2]=forex/history?symbol=EURUSD
&url[3]=forex/signals?symbol=EURUSD
&access_key=API_KEY
?url[1]=/forex/history?symbol=USDJPY
&url[2]=/forex/history?symbol=EURUSD
&url[3]=/forex/history?symbol=NZDJPY
&period=1D
&access_key=API_KEY
Response Format
Response Fields
array_key- Response indexed by your provided array keysstatus- Individual API call statusresponse- Individual API response data
Mini Sample Response
{
"url1": [
{
"status": true,
"response": []
}
],
"url2": [
{
"status": true,
"response": []
}
]
}- Dashboard data loading (prices + history + indicators)
- Portfolio tracking (multiple symbols at once)
- Comparative analysis (same data from different sources)
- Bulk data processing for applications
Error Codes & Troubleshooting
Understanding API error responses and how to handle them properly. All errors include a status code, error message, and helpful details for debugging.
Common HTTP Status Codes
| Code | Message | Description |
|---|---|---|
200 | Success | Request completed successfully |
400 | Bad Request | Invalid parameters or malformed request |
401 | Unauthorized | Invalid or missing API key |
403 | Forbidden | API key doesn't have permission |
429 | Rate Limited | Too many requests, slow down |
500 | Server Error | Internal server error |
101 | Key Error | Required API KEY |
102 | Account Error | Account not active/expire |
112 | Data Error | Data not found |
All errors return JSON with status:false, error code, descriptive message, and additional details when available.
- Check API key is valid and active
- Verify parameter names and values
- Ensure you're not exceeding rate limits
- Check symbol names are correctly formatted
- Validate date formats in historical requests
Rate Limits & Usage
Understanding API usage limits, credit system, and best practices for efficient API usage. Different endpoints have different credit costs based on data complexity.
Plan Limits
| Plan | Monthly API requests | Requests per minute |
|---|---|---|
| Free | 500 | 3 |
| Starter | 15,000 | 15 |
| Professional | 40,000 | 40 |
| Enterprise | 500,000 | 150 |
| Corporate | 1,200,000 | 250 |
Most endpoints cost 1 credit per request. Some endpoints (Latest, Profile, History) cost 1 credit per 100/300 records returned.
- Use bulk requests for multiple symbols
- Cache static data like profiles and symbol lists
- Implement exponential backoff for rate limit errors
- Monitor your usage in the dashboard
- Use webhooks for real-time data when available
Code Examples & SDKs
Ready-to-use code examples in popular programming languages. Copy and paste these examples to quickly integrate FCS API into your application.
Choose your preferred programming language and copy the example code to get started quickly.
Available Languages
- JavaScript: Fetch API, Axios, jQuery examples
- Python: Requests library, asyncio examples
- PHP: cURL, file_get_contents examples
- Java: HttpURLConnection, OkHttp examples
- C#: HttpClient examples
- Node.js: HTTP, Axios examples
Official SDKs available for Python, JavaScript/Node.js, and PHP. Download from our GitHub repository or install via package managers.
curl "https://api-v4.fcsapi.com/forex/latest?symbol=EURUSD&access_key=API_KEY"- Always handle API errors gracefully
- Implement proper rate limiting in your code
- Cache responses when appropriate
- Use environment variables for API keys
- Validate API responses before processing
Disclaimer & Terms of Use
Important information about data usage, accuracy, and limitations of the FCS API service.
Data Accuracy & Usage
Prices, Market trends and signals are not designed for trading purposes. These signals are only for educational or non-commercial purpose use. Data contained in this application/website is not necessarily real-time nor accurate and so prices may not be accurate and may differ from the actual market price, meaning prices are indicative and not appropriate for trading purposes.
Trading Disclaimer
Therefore we don't bear any responsibility for any trading losses you might incur as a result of using this data. Latest price minimum refresh rate is 30 seconds.
Data Sources
Our data is sourced from multiple financial institutions and exchanges. While we strive for accuracy, we cannot guarantee 100% accuracy or completeness of the data.
This API is for informational and educational purposes only. Always consult with financial advisors before making investment decisions.
- Data is for informational purposes only
- Not suitable for high-frequency trading
- Prices may differ from real market prices
- No liability for trading losses
- Terms of service apply to all usage
