← Neper
Guide

API

Get headlines from a news API by country

Query headlines, article URLs, images, and summaries by country and section. Subscribe to Neper News API on RapidAPI or JoJ API.

Get headlines from a news API by country — Neper
Quick answer

What this guide covers

Query headlines, article URLs, images, and summaries by country and section. Subscribe to Neper News API on RapidAPI or JoJ API.

  • Request: country and section
  • Response shape
  • RapidAPI
  • JoJ API
  • Errors
  • Choosing a marketplace

Neper collects news by country and section. That same data is available as Neper News API, so an app can request headlines, article URLs, images, and summaries without scraping each source itself.

There is one endpoint, /queryNews. You call it through either marketplace below. The request shape is the same; only the host and auth headers change.

The Neper guide hub keeps the current API guide and future Neper documentation in one place.

Subscribe on the marketplace you already use, then call /queryNews with that marketplace’s key.

Neper mobile app showing entertainment news in English
The English news feed in the Neper mobile app. The API uses the same country and section structure.

1. Request: country and section

Both GET and POST are supported.

  • country (required): en, ko, au, nz, it, ja, gb, fr, de, or in
  • section (optional): omit it to receive every section for that country

Common section values: top, BUSINESS, ENTERTAINMENT, SPORTS, WORLD, HEALTH.

Science and technology use different ids by country:

  • it, ko, ja, fr, de → SCITECH
  • en, au, nz, gb, in → SCIENCE or TECHNOLOGY

TOP is treated as top. On GET, multiple sections look like BUSINESS,SPORTS. On POST, you can send a string, a comma-separated string, or a JSON array.

Examples:

GET /queryNews?country=en
GET /queryNews?country=ko&section=top
GET /queryNews?country=ko&section=SCITECH
{ "country": "gb", "section": ["SPORTS", "BUSINESS"] }

News documents refresh about every five minutes. updatedAt is a Unix timestamp in milliseconds.

2. Response shape

A successful response looks like this:

{
  "status": "success",
  "message": "Request successful",
  "data": {
    "country": "ko",
    "sections": ["top"],
    "count": 1,
    "items": [
      {
        "docId": "kotop",
        "code": "ko",
        "id": "top",
        "updatedAt": 1757116800000,
        "news": [
          {
            "title": { "_text": "Headline" },
            "link": { "_text": "https://news.google.com/rss" },
            "url": "https://example.com/article",
            "img": "https://example.com/image.jpg",
            "content": "Article body",
            "summary": "One-sentence summary",
            "section": "top"
          }
        ]
      }
    ]
  }
}

A few details that are easy to miss:

  • If you omit section, data.sections is an empty array and every section for that country comes back.
  • title and link may be objects with a _text field. Read _text before showing them in a UI.
  • Articles can also include fields such as description and faviconUrl.
  • AI summary is filled for de, en, and ko. Other countries return an empty string. Even in supported countries, summary can be empty when the source page had no usable article body.

3. RapidAPI

  1. Open the RapidAPI listing and subscribe to a plan.
  2. Copy your RapidAPI key from the dashboard.
  3. Call the RapidAPI host. Keep the key in headers only — not in the URL or JSON body.
https://neper-news-api.p.rapidapi.com
X-RapidAPI-Key: <YOUR_KEY>
X-RapidAPI-Host: neper-news-api.p.rapidapi.com
curl -G 'https://neper-news-api.p.rapidapi.com/queryNews' \
  --data-urlencode 'country=ko' \
  --data-urlencode 'section=top' \
  -H 'X-RapidAPI-Key: <YOUR_KEY>' \
  -H 'X-RapidAPI-Host: neper-news-api.p.rapidapi.com'
import axios from 'axios'

const res = await axios.get('https://neper-news-api.p.rapidapi.com/queryNews', {
  params: { country: 'ko', section: 'top' },
  headers: {
    'X-RapidAPI-Key': '<YOUR_KEY>',
    'X-RapidAPI-Host': 'neper-news-api.p.rapidapi.com'
  }
})

console.log(res.data)
const res = await axios.post(
  'https://neper-news-api.p.rapidapi.com/queryNews',
  { country: 'en', section: ['top', 'BUSINESS'] },
  {
    headers: {
      'X-RapidAPI-Key': '<YOUR_KEY>',
      'X-RapidAPI-Host': 'neper-news-api.p.rapidapi.com'
    }
  }
)

4. JoJ API

  1. Open the JoJ API listing and subscribe to a plan.
  2. Create or copy a JoJ API key.
  3. Call the JoJ host for this API. The gateway checks the key and strips it before forwarding the request.
https://neper-news-api.jojapi.net

Preferred header:

X-JoJAPI-Key: <YOUR_KEY>

These also work:

Authorization: Bearer <YOUR_KEY>
Authorization: <YOUR_KEY>
curl -G 'https://neper-news-api.jojapi.net/queryNews' \
  --data-urlencode 'country=ko' \
  --data-urlencode 'section=top' \
  -H 'X-JoJAPI-Key: <YOUR_KEY>'
import axios from 'axios'

const res = await axios.get('https://neper-news-api.jojapi.net/queryNews', {
  params: { country: 'ko', section: 'top' },
  headers: {
    'X-JoJAPI-Key': '<YOUR_KEY>'
  }
})

console.log(res.data)
const res = await axios.post(
  'https://neper-news-api.jojapi.net/queryNews',
  { country: 'en', section: ['top', 'BUSINESS'] },
  {
    headers: {
      'X-JoJAPI-Key': '<YOUR_KEY>'
    }
  }
)

On JoJ API, billing is tied to the Request API object. One successful call counts as one unit, even when section is omitted and every section comes back. Exact monthly quotas and rate limits are on the listing’s pricing page. HTTP 5xx responses and gateway-generated errors do not consume quota.

5. Errors

Status What it usually means
400 Invalid or missing country / section. errorCode is INVALID_REQUEST, and allowed values are in message.
401 Key missing or invalid, or no active subscription
402 JoJ API billing issue: quota used up, object not in the plan, or wallet balance too low
429 Rate limit or quota exceeded
5xx Temporary server problem

JoJ API responses created by the gateway include X-Jojapi-Gateway-Response: true.

A common 400 cause is mixing science section ids: use SCITECH with ko, not SCIENCE; use SCIENCE or TECHNOLOGY with en, not SCITECH.

6. Choosing a marketplace

/queryNews behaves the same on both sides. Use RapidAPI if that is already where your keys and billing live. Use JoJ API if you want one JoJ key and wallet across several marketplace APIs.

Store keys outside source control. If you only need Neper traffic on JoJ API, restrict the key to this API.

Need another region, or stuck on an integration? Contact [email protected].

View another guideNeper →