openapi: 3.1.0 info: title: Nasdaq Data Link Time-Series REST API description: >- Nasdaq Data Link REST API (formerly Quandl) provides access to financial and economic time-series datasets including stock prices, economic indicators, interest rates, and commodity data in JSON, XML, and CSV formats. Authenticated users receive up to 50,000 API calls per day. version: 3.0.0 contact: name: Nasdaq Data Link Support url: https://docs.data.nasdaq.com/docs/contact-support license: name: Nasdaq Data Link Terms of Use url: https://data.nasdaq.com/terms servers: - url: https://data.nasdaq.com/api/v3 description: Nasdaq Data Link API security: - apiKeyQuery: [] - apiKeyHeader: [] tags: - name: Databases description: Database catalog and metadata - name: Datasets description: Time-series dataset retrieval - name: Tables description: Tabular dataset retrieval paths: /datasets/{databaseCode}/{datasetCode}: get: operationId: getDataset summary: Get a time-series dataset description: >- Returns time-series data from a Nasdaq Data Link dataset. Supports date range filtering, column selection, frequency transformation, and return type selection (JSON, XML, CSV). tags: - Datasets parameters: - $ref: '#/components/parameters/DatabaseCode' - $ref: '#/components/parameters/DatasetCode' - name: limit in: query description: Number of rows to return (0 returns all) schema: type: integer default: 100 maximum: 10000 - name: column_index in: query description: Request a specific column (1-based index) schema: type: integer - name: start_date in: query description: Retrieve data rows on and after this date (YYYY-MM-DD) schema: type: string format: date - name: end_date in: query description: Retrieve data rows up to and including this date (YYYY-MM-DD) schema: type: string format: date - name: order in: query description: Return data in ascending or descending date order schema: type: string enum: [asc, desc] default: desc - name: collapse in: query description: Frequency to collapse data to schema: type: string enum: [none, daily, weekly, monthly, quarterly, annual] default: none - name: transform in: query description: Mathematical transformation to apply to values schema: type: string enum: [none, diff, rdiff, rdiff_from, cumul, normalize] default: none - name: api_key in: query description: Your Nasdaq Data Link API key schema: type: string responses: '200': description: Dataset data content: application/json: schema: $ref: '#/components/schemas/DatasetResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/RateLimited' /datasets/{databaseCode}/{datasetCode}/metadata: get: operationId: getDatasetMetadata summary: Get dataset metadata description: Returns metadata for a dataset including column names, description, and date range. tags: - Datasets parameters: - $ref: '#/components/parameters/DatabaseCode' - $ref: '#/components/parameters/DatasetCode' responses: '200': description: Dataset metadata content: application/json: schema: $ref: '#/components/schemas/DatasetMetadataResponse' '404': $ref: '#/components/responses/NotFound' /databases: get: operationId: listDatabases summary: List databases description: Returns a list of all available Nasdaq Data Link databases with metadata. tags: - Databases parameters: - name: per_page in: query schema: type: integer default: 100 maximum: 100 - name: page in: query schema: type: integer default: 1 - name: query in: query description: Search query for database name or description schema: type: string responses: '200': description: Database list content: application/json: schema: $ref: '#/components/schemas/DatabaseListResponse' '401': $ref: '#/components/responses/Unauthorized' /databases/{databaseCode}: get: operationId: getDatabase summary: Get database metadata description: Returns metadata for a specific Nasdaq Data Link database. tags: - Databases parameters: - $ref: '#/components/parameters/DatabaseCode' responses: '200': description: Database metadata content: application/json: schema: $ref: '#/components/schemas/DatabaseResponse' '404': $ref: '#/components/responses/NotFound' /databases/{databaseCode}/datasets: get: operationId: listDatabaseDatasets summary: List datasets in a database description: Returns all datasets available in a specific database. tags: - Databases parameters: - $ref: '#/components/parameters/DatabaseCode' - name: per_page in: query schema: type: integer default: 100 - name: page in: query schema: type: integer default: 1 - name: query in: query schema: type: string responses: '200': description: Dataset list content: application/json: schema: $ref: '#/components/schemas/DatasetListResponse' /datatables/{datatablesCode}: get: operationId: getDataTable summary: Query a datatable description: >- Returns rows from a Nasdaq Data Link datatable (tabular dataset). Supports row-level filtering, column selection, and pagination using cursor-based pagination. Maximum 10,000 rows per call. tags: - Tables parameters: - name: datatablesCode in: path required: true description: Database code and datatable code joined by slash (e.g. ZACKS/FC) schema: type: string example: ZACKS/FC - name: qopts.columns in: query description: Comma-separated column names to return schema: type: string - name: qopts.per_page in: query description: Number of rows per page (max 10000) schema: type: integer default: 100 maximum: 10000 - name: qopts.cursor_id in: query description: Cursor ID for pagination from previous response schema: type: string - name: qopts.export in: query description: Set to true to get a download link for full dataset schema: type: boolean - name: api_key in: query schema: type: string responses: '200': description: Datatable rows content: application/json: schema: $ref: '#/components/schemas/DatatableResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/RateLimited' components: securitySchemes: apiKeyQuery: type: apiKey in: query name: api_key description: Nasdaq Data Link API key passed as query parameter apiKeyHeader: type: apiKey in: header name: X-Api-Token description: Nasdaq Data Link API key passed as header parameters: DatabaseCode: name: databaseCode in: path required: true description: Database code (e.g., FRED, WIKI, CHRIS, BCOM) schema: type: string DatasetCode: name: datasetCode in: path required: true description: Dataset code within the database (e.g., GDP, AAPL) schema: type: string responses: BadRequest: description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/QuandlError' Unauthorized: description: Invalid or missing API key content: application/json: schema: $ref: '#/components/schemas/QuandlError' NotFound: description: Dataset or database not found content: application/json: schema: $ref: '#/components/schemas/QuandlError' RateLimited: description: Rate limit exceeded headers: X-RateLimit-Limit: schema: type: integer description: Number of requests allowed per day X-RateLimit-Remaining: schema: type: integer description: Number of requests remaining today X-RateLimit-Reset: schema: type: integer description: Epoch timestamp when limit resets content: application/json: schema: $ref: '#/components/schemas/QuandlError' schemas: DatasetResponse: type: object properties: dataset: $ref: '#/components/schemas/DatasetWithData' DatasetWithData: type: object properties: id: type: integer description: Internal dataset ID dataset_code: type: string database_code: type: string name: type: string description: type: string refreshed_at: type: string format: date-time newest_available_date: type: string format: date oldest_available_date: type: string format: date column_names: type: array description: Column names in order matching data rows items: type: string example: ["Date", "Open", "High", "Low", "Close", "Volume", "Adj. Close"] frequency: type: string enum: [annual, quarterly, monthly, weekly, daily] type: type: string enum: [Time Series] premium: type: boolean description: True if this is a premium (paid) dataset data: type: array description: Array of data rows; each row matches column_names order items: type: array items: oneOf: - type: string - type: number - type: "null" start_date: type: string format: date end_date: type: string format: date DatasetMetadataResponse: type: object properties: dataset: type: object properties: id: type: integer dataset_code: type: string database_code: type: string name: type: string description: type: string refreshed_at: type: string format: date-time newest_available_date: type: string format: date oldest_available_date: type: string format: date column_names: type: array items: type: string frequency: type: string type: type: string premium: type: boolean DatabaseResponse: type: object properties: database: $ref: '#/components/schemas/Database' DatabaseListResponse: type: object properties: databases: type: array items: $ref: '#/components/schemas/Database' meta: $ref: '#/components/schemas/PaginationMeta' Database: type: object properties: id: type: integer name: type: string database_code: type: string description: type: string datasets_count: type: integer downloads: type: integer premium: type: boolean image: type: string format: uri favorite: type: boolean url_name: type: string DatasetListResponse: type: object properties: datasets: type: array items: $ref: '#/components/schemas/DatasetMetadata' meta: $ref: '#/components/schemas/PaginationMeta' DatasetMetadata: type: object properties: id: type: integer dataset_code: type: string database_code: type: string name: type: string description: type: string refreshed_at: type: string format: date-time newest_available_date: type: string format: date oldest_available_date: type: string format: date column_names: type: array items: type: string frequency: type: string premium: type: boolean DatatableResponse: type: object properties: datatable: type: object properties: data: type: array description: Array of data rows items: type: array items: oneOf: - type: string - type: number - type: "null" columns: type: array description: Column metadata items: type: object properties: name: type: string type: type: string meta: type: object properties: next_cursor_id: type: string nullable: true description: Cursor ID for next page; null if no more data PaginationMeta: type: object properties: query: type: string per_page: type: integer current_page: type: integer prev_page: type: integer nullable: true next_page: type: integer nullable: true total_count: type: integer QuandlError: type: object properties: quandl_error: type: object properties: code: type: string message: type: string