openapi: 3.2.0 info: title: Tiingo News API version: 1.0.0 description: 'Tiingo''s REST API for financial market data: end-of-day equity prices, IEX intraday, BOATS overnight equity data, consolidated equity realtime snapshots, crypto, crypto yield, forex, fundamentals, mutual fund and ETF fees, corporate actions, curated news, and asset search. Most endpoints return JSON by default and support CSV via the format parameter. Generated by API Evangelist from Tiingo''s published documentation (https://www.tiingo.com/documentation/) - Tiingo does not publish an OpenAPI itself.' termsOfService: https://www.tiingo.com/about/terms contact: name: Tiingo Support url: https://www.tiingo.com/support email: support@tiingo.com x-apievangelist: generated: '2026-07-22' method: generated source: https://apimedia.tiingo.com/dist/src_app_api_documentation_documentation_module_ts-es2015.f5eea3d64917e26bb724.js servers: - url: https://api.tiingo.com security: - apiTokenHeader: [] - apiTokenQuery: [] tags: - name: News paths: /tiingo/news: get: operationId: listNews summary: Get curated financial news articles tags: - News externalDocs: url: https://www.tiingo.com/documentation/news parameters: - name: tickers in: query required: false description: 'A comma-separated list of the tickers requested. When passing via GET parameter (not in URL), use a JSON array, otherwise use a comma-separated list. #Use the below format if querying directly in the URL https://api.tiingo.com/tiingo/news?tickers=aapl,googl #Otherwise, if passing GET parameters via a request library, use a JSON array like this: tickers : [''aapl'',''googl'']' schema: type: array items: type: string - name: source in: query required: false description: 'A comma-separated list of the tags requested. When passing via GET parameter (not in URL), use a JSON array, otherwise use a comma-separated list. #Use the below format if querying directly in the URL https://api.tiingo.com/tiingo/news?source=bloomberg.com,reuters.com #Otherwise, if passing GET parameters via a request library, use a JSON array like this: source : [''bloomberg.com'',''reuters.com'']' schema: type: array items: type: string - name: startDate in: query required: false description: If startDate or endDate is not null, historical data will be queried. This filter limits news stories to on or later than the publishedDate (>=). Parameter must be in YYYY-MM-DD format. schema: type: string format: date - name: endDate in: query required: false description: If startDate or endDate is not null, historical data will be queried. This filter limits news stories to on or less than the publishedDate (<=). Parameter must be in YYYY-MM-DD format. schema: type: string format: date - name: limit in: query required: false description: The maximum number of news objects to return in the array. The default is 100 and the max is 1000. This is maxed to 1,000 as any more than that tends to lead to longer wait times. If you would like this adjusted, please contact us at support@tiingo.com . schema: type: integer - name: offset in: query required: false description: 'This is a "pagination" variable that is often used alongside limit. It returns an array with the results shifted by "offset". For example, when limit is 0 you may get the following: 0. News Story A 1. News Story B 2. News Story C 3. News Story D When offset is "2" you will receive: 0. News Story C 1. News Story D 2. News Story E 3. News Story F This, when used alongside "limit" allows for pagination and more efficient queries.' schema: type: integer - name: sortBy in: query required: false description: The field can take either "publishedDate" or "crawlDate". The date field specified will be used to sort the results in descending order. The results can either be sorted by when the news outlet reported the publish time ("datePublished") or when our feeds came across is ("crawlDate"). Defaults to "publishedDate" if no value provided schema: type: string responses: '200': description: Successful response content: application/json: schema: type: array items: $ref: '#/components/schemas/NewsArticle' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/TooManyRequests' /tiingo/news/bulk_download: get: operationId: listNewsBulkFiles summary: List available bulk news download files tags: - News externalDocs: url: https://www.tiingo.com/documentation/news responses: '200': description: Successful response content: application/json: schema: type: array items: $ref: '#/components/schemas/NewsBulkFile' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/TooManyRequests' /tiingo/news/bulk_download/{id}: get: operationId: downloadNewsBulkFile summary: Download a bulk news batch file tags: - News externalDocs: url: https://www.tiingo.com/documentation/news parameters: - name: id in: path required: true description: The unique "id" that corresponds to the batch file you would like to download. If none is supplied, returns a list of the available batch files. schema: type: integer responses: '200': description: Successful response '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/TooManyRequests' components: schemas: NewsArticle: type: object properties: id: type: integer description: Unique identifier specific to the news article. title: type: string description: Title of the news article. url: type: string description: URL of the news article. description: type: string description: Long-form descripton of the news story. publishedDate: type: string format: date-time description: The datetime the news story was published in UTC. This is usually reported by the news source and not by Tiingo. If the news source does not declare a published date, Tiingo will use the time the news story was discovered by our crawler farm. crawlDate: type: string format: date-time description: The datetime the news story was added to our database in UTC. This is always recorded by Tiingo and the news source has no input on this date. If you note a large gap between crawlDate and publishedDate, it means the news article was backfilled, which usually happens when we add a new data source or gain access to historical data archives. source: type: string description: The domain the news source is from. tickers: type: array items: type: string description: What tickers are mentioned in the news story using Tiingo's proprietary tagging algo. tags: type: array items: type: string description: Tags that are mapped and discovered by Tiingo using Tiingo's proprietary tagging algo. NewsBulkFile: type: object properties: id: type: integer description: Unique identifier specific to the bulk download file. Used to select which file to download. url: type: string description: 'A url you can use to directly download the batch file. NOTE : This url contains your Auth Token and is meant to be a "copy/paste" url for your convenience' filename: type: string description: The filename of the batch file. batchType: type: string description: 'Describes what kind of batch file this is. The value will either be: "base" or "incremental". base is an entire dump of the data and incremental is a partial dump of the data. This should be used in conjunction with the startDate and endDate parameters to identify the bounds of the data dump.' startDate: type: string format: date description: The end date that was used to select the News objects to generate the batch file. This is not inclusive. publishedDate < endDate. fileSizeCompressed: type: integer description: The size of the file in bytes compressed using gzip. fileSizeUncompressed: type: integer description: The size of the file in bytes uncompressed. responses: Unauthorized: description: Missing or invalid API token. TooManyRequests: description: Usage limit exceeded. Tiingo limits by hourly requests (reset every hour), daily requests (reset at midnight EST), and monthly bandwidth (reset the first of every month at midnight EST); there is no per-minute or per-second rate limit. securitySchemes: apiTokenHeader: type: apiKey in: header name: Authorization description: 'Pass your API token in the Authorization header as: Authorization: Token .' apiTokenQuery: type: apiKey in: query name: token description: Pass your API token directly in the request URL via the token query parameter. externalDocs: description: Tiingo API documentation url: https://www.tiingo.com/documentation/general/overview