> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ngnmarket.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List ETFs

> Retrieve all NGX-listed Exchange Traded Funds and ETPs with current prices and period performance.

This endpoint returns a snapshot of every ETF and ETP listed on the Nigerian Exchange (NGX), including the current price, daily change, and period performance metrics (7-day, YTD, 52-week). Use it to build ETF screeners, populate a fund overview dashboard, or discover available symbols before querying detail or chart data.

Supports pagination and optional search by fund name, ticker symbol, or fund manager. All plan tiers can access this endpoint.


## OpenAPI

````yaml GET /etfs
openapi: 3.1.0
info:
  title: NGN Market API
  version: '1.0'
  description: >
    The NGN Market API provides programmatic access to Nigerian Exchange Group
    (NGX) market data, including equities, forex rates, company profiles,
    indices, bonds, and financial news.


    ## Base URL


    All endpoints are served from:


    ```

    https://api.ngnmarket.com/v1

    ```


    ## Authentication


    Every request requires a Bearer token in the `Authorization` header:


    ```

    Authorization: Bearer ngm_live_YOUR_KEY

    ```


    Generate and manage your API keys from the [developer
    dashboard](https://ngnmarket.com/developer).


    ## Plans & Quotas


    | Plan | Monthly Calls | Requests/min | Price |

    | :--- | ---: | ---: | :--- |

    | Free | 3,000 | 30 | Free |

    | Hobby | 10,000 | 60 | ₦15,000/mo |

    | Starter | 100,000 | 120 | ₦50,000/mo |

    | Growth | 500,000 | 200 | ₦200,000/mo |

    | Business | 2,000,000 | 300 | ₦700,000/mo |

    | Enterprise | Unlimited | Unlimited | Custom |


    Every response includes a `meta` object showing your current usage and
    remaining quota. Exceeding the per-minute rate limit returns `429
    RATE_LIMITED`. Exceeding the monthly quota returns `429 QUOTA_EXCEEDED`.


    ## Response Envelope


    All responses use a consistent JSON envelope:


    ```json

    {
      "success": true,
      "data": { ... },
      "meta": {
        "plan": "starter",
        "calls_used": 4821,
        "calls_remaining": 95179,
        "reset_at": "2026-05-01T00:00:00.000Z"
      }
    }

    ```
  contact:
    name: NGN Market Support
    email: support@ngnmarket.com
    url: https://ngnmarket.com
  license:
    name: Proprietary
servers:
  - url: https://api.ngnmarket.com/v1
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Market
    description: >-
      Daily market snapshots, top trades, movers, market breadth, sectors, and
      YTD performers.
  - name: Companies
    description: >-
      Browse, search, and retrieve profiles, price charts, and financial
      statements for NGX-listed companies.
  - name: Forex
    description: Current and historical NGN exchange rates against major currencies.
  - name: Indices
    description: >-
      All NGX market indices, including list, detail with constituents, and
      historical chart data.
  - name: ETFs
    description: >-
      NGX-listed Exchange Traded Funds and ETPs — list, full fund detail, and
      historical daily price data.
  - name: Bonds
    description: >-
      NGX-listed bond instruments with issuer details, coupon rates, and
      maturity dates.
  - name: Disclosures
    description: >-
      Official corporate filings from NGX-listed companies (financial
      statements, AGM notices, board meetings, director dealings, earnings
      forecasts). Sourced from NGX Group and updated twice daily.
  - name: Blog
    description: >-
      Published NGN Market blog posts. List, search, and filter by category or
      company.
  - name: Dividends
    description: >-
      Market-wide NGX dividend calendar. Browse upcoming and recently paid
      dividends across all listed companies with optional search and pagination.
  - name: Account
    description: >-
      Quota status, 30-day request analytics, and paginated request logs for the
      authenticated user.
paths:
  /etfs:
    get:
      tags:
        - ETFs
      summary: List all NGX-listed ETFs
      description: >
        Returns a snapshot of every Exchange Traded Fund and ETP listed on the
        Nigerian Exchange (NGX). Each record includes the current price, daily
        change, period performance (7d, YTD, 52w), volume, and fund manager.
        Supports pagination, search, and sorting.


        **Plan required:** Free
      operationId: listETFs
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            default: 1
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
        - name: search
          in: query
          description: >-
            Filter by fund name, ticker, or fund manager (case-insensitive
            partial match).
          required: false
          schema:
            type: string
            example: Vetiva
        - name: sort
          in: query
          required: false
          schema:
            type: string
            enum:
              - name
              - symbol
              - price
              - price_change_percent
              - change_7d_percent
              - change_ytd_percent
              - change_52w_percent
              - volume
              - value_traded
            default: name
        - name: order
          in: query
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
            default: asc
      responses:
        '200':
          description: ETF list retrieved successfully.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/SuccessEnvelope'
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/ETFSummary'
                      pagination:
                        $ref: '#/components/schemas/Pagination'
              examples:
                etfList:
                  summary: All tracked NGX ETFs
                  value:
                    success: true
                    data:
                      - symbol: STANBICETF30
                        name: Stanbic IBTC ETF 30
                        isin: NGSTBKETF308
                        fund_manager: Stanbic IBTC Asset Management Limited
                        index_tracked: NSE 30
                        current_price: 4175
                        price_change: -155
                        price_change_percent: -3.47
                        change_7d_percent: null
                        change_ytd_percent: null
                        volume: 3961
                        value_traded: 16361032.94
                        high_52wk: 7003.96
                        low_52wk: 295.3
                        avg_vol_3m: 32
                        stats_date: '2026-06-10'
                      - symbol: VETBANK
                        name: Vetiva Banking ETF
                        isin: NGVETBANK009
                        fund_manager: Vetiva Fund Managers Limited
                        index_tracked: NSE Banking Index
                        current_price: 12.5
                        price_change: 0.3
                        price_change_percent: 2.46
                        change_7d_percent: null
                        change_ytd_percent: null
                        volume: 222878
                        value_traded: 2785975
                        high_52wk: 14
                        low_52wk: 3.5
                        avg_vol_3m: 98000
                        stats_date: '2026-06-10'
                    pagination:
                      page: 1
                      limit: 50
                      total: 12
                      pages: 1
                      has_next: false
                      has_prev: false
                    meta:
                      plan: free
                      calls_used: 41
                      calls_remaining: 9959
                      reset_at: '2026-07-01T00:00:00.000Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/QuotaExceeded'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  schemas:
    SuccessEnvelope:
      type: object
      required:
        - success
      properties:
        success:
          type: boolean
          const: true
        meta:
          $ref: '#/components/schemas/Meta'
    ETFSummary:
      type: object
      properties:
        symbol:
          type: string
          example: STANBICETF30
        isin:
          type: string
          nullable: true
          example: NGSTBKETF308
        name:
          type: string
          example: STANBIC IBTC ETF 30
        fund_manager:
          type: string
          nullable: true
          example: Stanbic IBTC Asset Management Limited
        index_tracked:
          type: string
          nullable: true
          example: NSE 30
        current_price:
          type: number
          nullable: true
          example: 4175
        prev_close:
          type: number
          nullable: true
          example: 4330
        price_change:
          type: number
          nullable: true
          example: -155
        price_change_percent:
          type: number
          nullable: true
          example: -3.47
        change_7d_percent:
          type: number
          nullable: true
          example: 2.14
        change_ytd_percent:
          type: number
          nullable: true
          example: null
        change_52w_percent:
          type: number
          nullable: true
          example: null
        volume:
          type: integer
          nullable: true
          description: Today's traded volume (units).
          example: 3961
        value_traded:
          type: number
          nullable: true
          description: Today's naira value traded.
          example: 16361032.94
        avg_vol_3m:
          type: integer
          nullable: true
          description: Average daily volume over the last 3 months.
          example: 32
        high_52wk:
          type: number
          nullable: true
          example: 7003.96
        low_52wk:
          type: number
          nullable: true
          example: 295.3
        stats_date:
          type: string
          format: date
          nullable: true
          example: '2026-06-10'
    Pagination:
      type: object
      properties:
        page:
          type: integer
          example: 1
        limit:
          type: integer
          example: 50
        total:
          type: integer
          example: 150
        total_pages:
          type: integer
          example: 3
    Meta:
      type: object
      description: Quota and plan metadata included on every authenticated response.
      properties:
        plan:
          type: string
          description: Current plan name.
          enum:
            - free
            - starter
            - growth
            - business
            - enterprise
          example: starter
        calls_used:
          type: integer
          description: Total calls made this calendar month across all your keys.
          example: 4821
        calls_remaining:
          type: integer
          description: Calls remaining before your quota is exhausted.
          example: 95179
        reset_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp of your next quota reset (1st of next month).
          example: '2026-05-01T00:00:00.000Z'
    ErrorEnvelope:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          const: false
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Machine-readable error identifier.
              example: NOT_FOUND
            message:
              type: string
              description: Human-readable error description.
              example: Resource not found.
            required_plan:
              type: string
              description: _(PLAN_REQUIRED only)_ Minimum plan needed.
            current_plan:
              type: string
              description: _(PLAN_REQUIRED only)_ Your current plan.
  responses:
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            missingKey:
              summary: Missing Authorization header
              value:
                success: false
                error:
                  code: MISSING_API_KEY
                  message: 'Provide your API key via: Authorization: Bearer <key>'
            invalidKey:
              summary: Invalid or revoked key
              value:
                success: false
                error:
                  code: INVALID_API_KEY
                  message: API key not found or revoked.
    QuotaExceeded:
      description: Monthly call limit reached.
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/ErrorEnvelope'
              - type: object
                properties:
                  meta:
                    $ref: '#/components/schemas/Meta'
          example:
            success: false
            error:
              code: QUOTA_EXCEEDED
              message: >-
                Monthly call limit of 100,000 reached. Resets on
                2026-05-01T00:00:00.000Z.
            meta:
              plan: starter
              calls_used: 100000
              calls_remaining: 0
              reset_at: '2026-05-01T00:00:00.000Z'
    ServerError:
      description: Unexpected server-side failure. Safe to retry with backoff.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            success: false
            error:
              code: SERVER_ERROR
              message: Something went wrong on our end. Please try again.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: ngm_live_*
      description: >
        Pass your API key as a Bearer token: `Authorization: Bearer
        ngm_live_YOUR_KEY`.

        Generate keys at
        [ngnmarket.com/dashboard/developer](https://ngnmarket.com/developer).

````