openapi: 3.2.0 info: title: Finage Market Data ET Fs API description: Finage is a real-time and historical market data provider covering US and global stocks, forex, cryptocurrencies, indices, ETFs, bonds, and company fundamentals. This OpenAPI was generated by API Evangelist from Finage's own machine-readable docs database (https://api.finage.co.uk/op/v1/endpoints/list — the same JSON the docs at https://finage.co.uk/docs/api render); every path, parameter, and example comes from that source. All endpoints are read-only GET requests authenticated with an apikey query parameter. Responses must be requested with gzip Accept-Encoding (the API returns 406 "GZip compression required" otherwise). version: 1.0.0 contact: name: Finage Support email: support@finage.co.uk url: https://finage.co.uk x-apievangelist: generated: '2026-07-22' method: generated source: https://api.finage.co.uk/op/v1/endpoints/list servers: - url: https://api.finage.co.uk security: - apiKey: [] tags: - name: ETFs paths: /last/etf/{symbol}: get: operationId: cfdEtfLastPrice summary: CFD ETF Last Price description: You can get the last ETFs price for a symbol with this endpoint. tags: - ETFs parameters: - name: symbol in: path required: true description: ETF symbol that you want to get prices schema: type: string responses: '200': description: CFD ETF Last Price response. content: application/json: schema: type: object properties: symbol: type: string description: Symbol of the ETF price: type: number description: Last price of the ETF timestamp: type: integer format: int64 description: Last update [ms] example: symbol: QQQ price: 319.1413 timestamp: 1614717768911 '401': $ref: '#/components/responses/Unauthorized' /agg/etf/{symbol}/{time}/{from}/{to}: get: operationId: cfdEtfMarketAggregatesApi summary: CFD ETF Market Aggregates API description: With the CFD ETF Market Aggregates API, you can get the tick bars of the ETF (Exchange Traded Fund) market. tags: - ETFs parameters: - name: symbol in: path required: true description: Symbol of the ETF schema: type: string - name: time in: path required: true description: Size of the time. [1min, 5min, 15min, 30min, 45min, 1h, 2h, 4h, 1day, 1week, 1month] schema: type: string - name: from in: path required: true description: Start date [yyyy-MM-dd] schema: type: string - name: to in: path required: true description: End date [yyyy-MM-dd] schema: type: string - name: limit in: query required: false description: Limit of the results. Default is 100, maximum allowed limit is 5000. Please set a limit if you are using the API in the production. schema: type: string - name: sort in: query required: false description: You can sort the results by timestamp. asc will return ascending results oldest to newest, desc will return descending results newest to oldest. Default is asc. schema: type: string - name: date_format in: query required: false description: 'Choose date format: ''dt'' for datetime or ''ts'' for timestamp. [Default: timestamp]' schema: type: string - name: dbt_filter in: query required: false description: Daily-based time filter. You can allow the time filters to filter daily based. Otherwise, the filter will only trim the start and end of the output. Default is false. schema: type: string - name: st in: query required: false description: Start time in UTC. (Eg. 17:30) schema: type: string - name: et in: query required: false description: End time in UTC. (Eg. 17:45) schema: type: string responses: '200': description: CFD ETF Market Aggregates API response. content: application/json: schema: type: object properties: symbol: type: string description: Symbol of the ETF totalResults: type: integer description: Total result size o: type: number description: Open price h: type: number description: Highest price l: type: number description: Lowest price c: type: number description: Close price v: type: integer description: Volume t: type: integer format: int64 description: Timestamp [ms] example: symbol: QQQ totalResults: 16 results: - o: '331.22000' h: '332.40250' l: '329.53000' c: '331.48001' v: '20774820' t: '2021-02-05' - o: '333.10001' h: '333.73999' l: '331.41010' c: '333.59000' v: '18421116' t: '2021-02-08' - o: '332.66000' h: '334.79990' l: '332.65381' c: '333.48999' v: '16706362' t: '2021-02-09' '401': $ref: '#/components/responses/Unauthorized' /agg/etf/prev-close/{symbol}: get: operationId: cfdEtfPreviousCloseApi summary: CFD ETF Previous Close API description: With the ETF Previous Close API, you can get the previous day's last tick bar of the ETF market. tags: - ETFs parameters: - name: symbol in: path required: true description: Symbol of the ETF schema: type: string responses: '200': description: CFD ETF Previous Close API response. content: application/json: schema: type: object properties: symbol: type: string description: Symbol of the ETF totalResults: type: integer description: Total result size o: type: number description: Open price h: type: number description: Highest price l: type: number description: Lowest price c: type: number description: Close price v: type: integer description: Volume t: type: integer format: int64 description: Timestamp [ms] example: symbol: QQQ totalResults: 1 results: - o: 364.84 h: 365.48001 l: 362.22 c: 362.98001 v: 34110963 t: 1626220800000 '401': $ref: '#/components/responses/Unauthorized' components: responses: Unauthorized: description: Missing or invalid API key, or your plan does not include this market. content: application/json: schema: $ref: '#/components/schemas/Error' example: error: Please use your APIKey to make a request. schemas: Error: type: object description: Finage error envelope — a single error string. properties: error: type: string description: Human-readable error message. securitySchemes: apiKey: type: apiKey name: apikey in: query description: Finage API key, passed as the apikey query parameter on every request. Get one at https://moon.finage.co.uk/register. externalDocs: description: Finage API documentation url: https://finage.co.uk/docs/api