APITube News API

News search and retrieval — everything, top headlines, trends, companies, journalists, fact-checks and taxonomy suggestion. 26 operations, API key by header or query.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/apitube-news-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

apitube-news-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: APITube News API
  version: 1.0.0
  summary: Search and filter news articles from thousands of sources worldwide.
  description: 'APITube News API provides programmatic access to a comprehensive, real-time news database
    aggregated from thousands of sources worldwide. Use it to search, filter, and retrieve news articles
    with advanced query capabilities.


    ## Key Endpoints


    - **Everything** (`/v1/news/everything`) — full-text search across all indexed articles with filters
    by title, date range, language, country, source, sentiment, category, topic, industry, and named entities
    (people, organizations, locations, brands, etc.).

    - **Top Headlines** (`/v1/news/top-headlines`) — breaking and trending news from high-authority sources
    ranked by OPR score.

    - **Story** (`/v1/news/story/{articleId}`) — retrieve related articles for a given story.

    - **Article** (`/v1/news/article`) — fetch one or more articles by ID.

    - **Dictionaries** — list available categories, topics, industries, and entities.

    - **Trends** — discover trending topics and entities over time.

    - **Stream** (`/v1/news/stream`) — real-time Server-Sent Events (SSE) stream of new articles.

    - **Webhooks** — subscribe to push notifications for new articles matching your filters.


    ## Export Formats


    JSON (default), CSV, TSV, XML, RSS, XLSX, Parquet, JSONL, and NDJSON.


    ## Authentication


    All requests require an API key passed via the `X-API-Key` header or the `api_key` query parameter.'
  contact:
    name: APITube Support
    url: https://apitube.io
    email: support@apitube.io
  termsOfService: https://apitube.io/terms/terms-of-service
components:
  securitySchemes:
    ApiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: API key passed via X-API-Key header
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api_key
      description: API key passed as query parameter
  schemas: {}
paths:
  /ping:
    get:
      summary: Ping (Health Check)
      tags:
      - System
      description: Returns "pong" if the server is running.
      responses:
        '200':
          description: Server is healthy
          content:
            application/json:
              schema:
                description: Server is healthy
                type: string
              example: pong
  /v1/balance:
    get:
      summary: Get API key balance
      tags:
      - Account
      description: Returns the current balance and plan information for the provided API key.
      responses:
        '200':
          description: API key balance information
          content:
            application/json:
              schema:
                description: API key balance information
                type: object
                properties:
                  api_key:
                    type: string
                    description: The API key
                  points:
                    type: integer
                    description: Remaining points
                  plan:
                    type: string
                    description: Subscription plan name
              example:
                api_key: ak_live_abc123...
                points: 48500
                plan: professional
        '400':
          description: API key is required
          content:
            application/json:
              schema:
                description: API key is required
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - not_ok
                    description: Response status
                  request_id:
                    type:
                    - 'null'
                    - string
                    description: Unique request identifier
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        status:
                          type: integer
                          description: HTTP status code
                        code:
                          type: string
                          description: Error code (e.g. ER0201)
                        message:
                          type: string
                          description: Human-readable error message
                        links:
                          type: object
                          properties:
                            about:
                              type: string
                              description: Link to error documentation
                        timestamp:
                          type: string
                          format: date-time
                          description: Error timestamp
              example:
                status: not_ok
                request_id: req_abc123def456
                errors:
                - status: 401
                  code: ER0201
                  message: Invalid or missing API key.
                  links:
                    about: https://docs.apitube.io/platform/news-api/http-response-codes
                  timestamp: '2026-03-23T14:30:00Z'
        '401':
          description: Invalid API key
          content:
            application/json:
              schema:
                description: Invalid API key
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - not_ok
                    description: Response status
                  request_id:
                    type:
                    - 'null'
                    - string
                    description: Unique request identifier
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        status:
                          type: integer
                          description: HTTP status code
                        code:
                          type: string
                          description: Error code (e.g. ER0201)
                        message:
                          type: string
                          description: Human-readable error message
                        links:
                          type: object
                          properties:
                            about:
                              type: string
                              description: Link to error documentation
                        timestamp:
                          type: string
                          format: date-time
                          description: Error timestamp
              example:
                status: not_ok
                request_id: req_abc123def456
                errors:
                - status: 401
                  code: ER0201
                  message: Invalid or missing API key.
                  links:
                    about: https://docs.apitube.io/platform/news-api/http-response-codes
                  timestamp: '2026-03-23T14:30:00Z'
  /v1/news/everything:
    post:
      summary: Search all news articles
      tags:
      - News
      description: Search and filter news articles from thousands of sources worldwide. Supports advanced
        filtering by title, date, language, source, category, topic, industry, entity, sentiment, readability,
        media, location, and more. Results can be exported in multiple formats (CSV, TSV, XML, RSS, XLSX,
        Parquet, JSONL).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                prompt:
                  type: string
                  minLength: 3
                  maxLength: 500
                  description: 'Plain-language description of the news you want, e.g. "Elon Musk, Tesla,
                    news for the last 10 days". It is translated into the regular filters below before
                    the search runs, and the resulting parameters are returned in meta.prompt. Explicit
                    parameters always win over the prompt. Costs 2 extra points when the wording has not
                    been parsed before (repeats are served from cache). Available on Basic and above —
                    on Free and Starter the request fails with 403 ER0706. Errors: ER0706 (plan), ER0800
                    (length), ER0801 (translation service unavailable), ER0802 (nothing usable in the
                    prompt).'
                page:
                  type: integer
                  minimum: 1
                  default: 1
                  description: Page number for pagination
                per_page:
                  type: integer
                  minimum: 1
                  maximum: 250
                  default: 100
                  description: Number of results per page (max 250; the Free plan is capped at 10 and
                    Starter at 50)
                sort.by:
                  type: string
                  enum:
                  - published_at
                  - relevance
                  - engagement
                  - quality
                  - controversy
                  - trust
                  - id
                  - new
                  - created_at
                  - source.rank.opr
                  - sentiment.overall.score
                  - sentiment.title.score
                  - sentiment.body.score
                  - read_time
                  - sentences_count
                  - paragraphs_count
                  - characters_count
                  - media.images.count
                  - media.videos.count
                  - media.images.width.min
                  - media.images.width.max
                  - media.images.height.min
                  - media.images.height.max
                  - media_richness
                  - shares.facebook.min
                  - shares.facebook.max
                  - shares.twitter.min
                  - shares.twitter.max
                  - shares.reddit.min
                  - shares.reddit.max
                  default: published_at
                  description: Field to sort results by
                sort.order:
                  type: string
                  enum:
                  - asc
                  - desc
                  default: desc
                  description: Sort order
                article.id:
                  type: string
                  description: Comma-separated article IDs (max 5)
                  example: '12345'
                title:
                  type: string
                  minLength: 2
                  maxLength: 100
                  description: 'Search in article titles. Supports phrase search with proximity: "climate
                    change"~2. Title search is limited to a 31-day published_at window: without published_at.start
                    / published_at.end the last 31 days are searched, a wider explicit range returns ER0110.'
                ignore.title:
                  type: string
                  minLength: 2
                  maxLength: 100
                  description: Exclude articles containing this text in the title
                title_starts_with:
                  type: string
                  minLength: 2
                  maxLength: 100
                  description: Filter articles whose title starts with the given text. Same 31-day window
                    limit as title
                title_ends_with:
                  type: string
                  minLength: 2
                  maxLength: 100
                  description: Filter articles whose title ends with the given text. Same 31-day window
                    limit as title
                title_pattern:
                  type: string
                  minLength: 2
                  maxLength: 200
                  description: Filter articles whose title matches the given pattern. Same 31-day window
                    limit as title
                published_at:
                  type: string
                  description: 'Exact date (creates 24-hour range). Format: YYYY-MM-DD or ISO 8601'
                  example: '2025-01-15'
                published_at.start:
                  type: string
                  description: 'Start of date range. Format: YYYY-MM-DD or ISO 8601. Combined with a title
                    search the range may not exceed 31 days (ER0110)'
                  example: '2025-01-01'
                published_at.end:
                  type: string
                  description: 'End of date range. Format: YYYY-MM-DD or ISO 8601. Combined with a title
                    search the range may not exceed 31 days (ER0110)'
                  example: '2025-01-31'
                language.code:
                  type: string
                  description: Comma-separated ISO 639-1 language codes (max 3)
                  example: en
                ignore.language.code:
                  type: string
                  description: Exclude articles in these languages (comma-separated, max 3)
                  example: zh,ar
                source.country.code:
                  type: string
                  description: Filter by source country ISO 3166-1 alpha-2 codes (comma-separated, max
                    3)
                  example: us
                ignore.source.country.code:
                  type: string
                  description: Exclude sources from these countries (comma-separated, max 3)
                  example: us
                source.rank.opr.min:
                  type: integer
                  minimum: 0
                  description: Minimum Open PageRank score
                source.rank.opr.max:
                  type: integer
                  minimum: 0
                  description: Maximum Open PageRank score
                source.id:
                  type: string
                  description: Comma-separated source IDs (max 3)
                  example: '100'
                ignore.source.id:
                  type: string
                  description: Exclude these source IDs (comma-separated, max 3)
                source.domain:
                  type: string
                  description: Comma-separated source domains (max 3)
                  example: nytimes.com
                ignore.source.domain:
                  type: string
                  description: Exclude these source domains (comma-separated, max 3)
                source.bias:
                  type: string
                  description: 'Filter by media bias (comma-separated). Values: left, center, right'
                  example: left
                ignore.source.bias:
                  type: string
                  description: 'Exclude sources with this media bias (comma-separated). Values: left,
                    center, right'
                  example: right
                is_premium_source:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter by premium source status
                is_verified_source:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter by verified source status
                category.id:
                  type: string
                  description: Comma-separated category IDs (max 3)
                  example: iab-1
                ignore.category.id:
                  type: string
                  description: Exclude these categories (comma-separated, max 3)
                topic.id:
                  type: string
                  description: Comma-separated topic IDs (max 3)
                  example: technology
                ignore.topic.id:
                  type: string
                  description: Exclude these topics (comma-separated, max 3)
                industry.id:
                  type: string
                  description: Comma-separated industry IDs (max 3)
                  example: '1'
                ignore.industry.id:
                  type: string
                  description: Exclude these industries (comma-separated, max 3)
                entity.id:
                  type: string
                  description: Comma-separated entity IDs (max 3)
                  example: '12345'
                ignore.entity.id:
                  type: string
                  description: Exclude these entity IDs (comma-separated, max 3)
                entity.sentiment.polarity:
                  type: string
                  enum:
                  - positive
                  - negative
                  - neutral
                  description: Filter by sentiment polarity toward the entity (combine with entity.id
                    or *.name; standalone = any entity)
                entity.sentiment.score.min:
                  type: number
                  minimum: -1
                  maximum: 1
                  description: Minimum sentiment score toward the entity
                entity.sentiment.score.max:
                  type: number
                  minimum: -1
                  maximum: 1
                  description: Maximum sentiment score toward the entity
                person.name:
                  type: string
                  maxLength: 120
                  description: Filter by person name (comma-separated, max 3)
                  example: Elon Musk
                ignore.person.name:
                  type: string
                  maxLength: 120
                  description: Exclude articles mentioning these persons (comma-separated, max 3)
                organization.name:
                  type: string
                  maxLength: 120
                  description: Filter by organization name (comma-separated, max 3)
                  example: Google
                ignore.organization.name:
                  type: string
                  maxLength: 120
                  description: Exclude articles mentioning these organizations (comma-separated, max 3)
                location.name:
                  type: string
                  maxLength: 120
                  description: Filter by location name (comma-separated, max 3)
                  example: New York
                ignore.location.name:
                  type: string
                  maxLength: 120
                  description: Exclude articles mentioning these locations (comma-separated, max 3)
                brand.name:
                  type: string
                  maxLength: 120
                  description: Filter by brand name (comma-separated, max 3)
                ignore.brand.name:
                  type: string
                  maxLength: 120
                  description: Exclude articles mentioning these brands (comma-separated, max 3)
                disaster.name:
                  type: string
                  maxLength: 120
                  description: Filter by natural disaster name (comma-separated, max 3)
                ignore.disaster.name:
                  type: string
                  maxLength: 120
                  description: Exclude articles mentioning these disasters (comma-separated, max 3)
                disease.name:
                  type: string
                  maxLength: 120
                  description: Filter by disease name (comma-separated, max 3)
                ignore.disease.name:
                  type: string
                  maxLength: 120
                  description: Exclude articles mentioning these diseases (comma-separated, max 3)
                event.name:
                  type: string
                  maxLength: 120
                  description: Filter by event name (comma-separated, max 3)
                ignore.event.name:
                  type: string
                  maxLength: 120
                  description: Exclude articles mentioning these events (comma-separated, max 3)
                sport.name:
                  type: string
                  maxLength: 120
                  description: Filter by sport name (comma-separated, max 3)
                ignore.sport.name:
                  type: string
                  maxLength: 120
                  description: Exclude articles mentioning these sports (comma-separated, max 3)
                event.type:
                  type: string
                  description: 'Comma-separated event types (max 5). Values: merger-acquisition, ipo,
                    layoffs, bankruptcy, product-launch, funding-round, earnings, partnership, executive-change,
                    lawsuit, data-breach, recall, expansion, closure, stock-movement, contract-award,
                    spin-off, regulatory-action, election, protest, crime, terrorism, accident, policy-change,
                    scandal, death, award-ceremony, conflict, diplomacy, health-crisis, migration, human-rights,
                    earthquake, hurricane, flood, wildfire, tornado, tsunami, volcanic-eruption, drought,
                    climate-event, pollution, wildlife-event, avalanche'
                  example: ipo
                event.category:
                  type: string
                  enum:
                  - business
                  - society
                  - environment
                  description: Filter by event category
                ignore.event.type:
                  type: string
                  description: Exclude these event types (comma-separated, max 5)
                sentiment.overall.score:
                  type: number
                  minimum: -1
                  maximum: 1
                  description: Exact overall sentiment score
                sentiment.overall.score.min:
                  type: number
                  minimum: -1
                  maximum: 1
                  description: Minimum overall sentiment score
                sentiment.overall.score.max:
                  type: number
                  minimum: -1
                  maximum: 1
                  description: Maximum overall sentiment score
                sentiment.overall.polarity:
                  type: string
                  enum:
                  - positive
                  - negative
                  - neutral
                  description: Overall sentiment polarity
                sentiment.title.score:
                  type: number
                  minimum: -1
                  maximum: 1
                  description: Exact title sentiment score
                sentiment.title.score.min:
                  type: number
                  minimum: -1
                  maximum: 1
                  description: Minimum title sentiment score
                sentiment.title.score.max:
                  type: number
                  minimum: -1
                  maximum: 1
                  description: Maximum title sentiment score
                sentiment.title.polarity:
                  type: string
                  enum:
                  - positive
                  - negative
                  - neutral
                  description: Title sentiment polarity
                sentiment.body.score:
                  type: number
                  minimum: -1
                  maximum: 1
                  description: Exact body sentiment score
                sentiment.body.score.min:
                  type: number
                  minimum: -1
                  maximum: 1
                  description: Minimum body sentiment score
                sentiment.body.score.max:
                  type: number
                  minimum: -1
                  maximum: 1
                  description: Maximum body sentiment score
                sentiment.body.polarity:
                  type: string
                  enum:
                  - positive
                  - negative
                  - neutral
                  description: Body sentiment polarity
                sentiment.mixed:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter for mixed sentiment (title polarity != body polarity)
                sentiment.consistent:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter for consistent sentiment (title polarity == body polarity)
                is_clickbait:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter by clickbait detection
                sentiment_gap.min:
                  type: number
                  minimum: 0
                  maximum: 2
                  description: Minimum sentiment gap between title and body
                sentiment_gap.max:
                  type: number
                  minimum: 0
                  maximum: 2
                  description: Maximum sentiment gap between title and body
                media.images.count:
                  type: integer
                  minimum: 0
                  description: Exact number of images
                media.images.count.min:
                  type: integer
                  minimum: 0
                  description: Minimum number of images
                media.images.count.max:
                  type: integer
                  minimum: 0
                  description: Maximum number of images
                media.images.width.min:
                  type: integer
                  minimum: 0
                  description: Minimum image width in pixels
                media.images.width.max:
                  type: integer
                  minimum: 0
                  description: Maximum image width in pixels
                media.images.height.min:
                  type: integer
                  minimum: 0
                  description: Minimum image height in pixels
                media.images.height.max:
                  type: integer
                  minimum: 0
                  description: Maximum image height in pixels
                media.videos.count:
                  type: integer
                  minimum: 0
                  description: Exact number of videos
                media.videos.count.min:
                  type: integer
                  minimum: 0
                  description: Minimum number of videos
                media.videos.count.max:
                  type: integer
                  minimum: 0
                  description: Maximum number of videos
                has_image:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with/without images
                has_video:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with/without videos
                has_hq_images:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with high-quality images (>= 1200px width)
                is_media_rich:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with both images and videos
                is_landscape_media:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with landscape-oriented media
                is_portrait_media:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with portrait-oriented media
                has_multiple_images:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with 2+ images
                has_fullhd_images:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with Full HD images (>= 1920px width)
                has_4k_images:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with 4K images (>= 3840px width)
                has_mobile_optimized_images:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with mobile-optimized images (320-800px width)
                is_instagram_ready:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with Instagram-ready images (>= 1080px + aspect ratio)
                is_twitter_card_ready:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with Twitter Card-ready images (>= 800px + landscape)
                has_consistent_image_sizes:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with consistent image dimensions
                has_thumbnail:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with thumbnail images (<= 300px width)
                has_social_share_image:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with social share images (>= 1200x630px)
                has_mixed_media:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Filter articles with both image and video media types
                readability.fk_grade:
                  type: number
                  minimum: 0
                  maximum: 30
                  description: Exact Flesch-Kincaid grade level
                readability.fk_grade.min:
                  type: number
                  minimum: 0
                  maximum: 30
                  description: Minimum Flesch-Kincaid grade level
                readability.fk_grade.max:
                  type: number
                  minimum: 0
                  maximum: 30
                  description: Maximum Flesch-Kincaid grade level
                readability.ease:
                  type: number
                  minimum: 0
                  maximum: 100
                  description: Exact Flesch Reading Ease score
                readability.ease.min:
                  type: number
                  minimum: 0
                  maximum: 100
                  description: Minimum Flesch Reading Ease score
                readability.ease.max:
                  type: number
                  minimum: 0
                  maximum: 100
                  description: Maximum Flesch Reading Ease score
                readability.ari:
                  type: number
                  minimum: 0
                  maximum: 30
                  description: Exact Automated Readability Index
                readability.ari.min:
                  type: number
                  minimum: 0
                  maximum: 30
                  description: Minimum Automated Readability Index
                readability.ari.max:
                  type: number
                  minimum: 0
                  maximum: 30
                  description: Maximum Automated Readability Index
                readability.difficulty:
                  type: string
                  enum:
                  - beginner
                  - intermediate
                  - advanced
                  - expert
                  description: Difficulty level
                readability.audience:
                  type: string
                  enum:
                  - children
                  - general
                  - professional
                  - academic
                  description: Target audience
                readability.age:
                  type: integer
        

# --- truncated at 32 KB (860 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/apitube/refs/heads/main/openapi/apitube-news-api-openapi.yml