Skip to main content
Today: Today February 19, 2026
HubNews
Blockchain+
Cybersecurity+
Development+
Economy & Finance+
Gaming+
Artificial Intelligence+
Hardware+
Startups
Blockchain+
Cybersecurity+
Development+
Economy & Finance+
Gaming+
Artificial Intelligence+
Hardware+
Startups

HubNews API

Free, public, no-auth REST API. Integrate tech articles, categories, and reaction data into your application in minutes.

Quick Start

Make your first request right now. No API key required:

curl -s "https://api.hubnews.ai/api/v1/public/articles?locale=en&per_page=3" | python3 -m json.tool

Base URL

https://api.hubnews.ai/api/v1/public

Rate Limiting

1,000 requests per hour per IP. Response headers include:

HeaderDescription
X-RateLimit-LimitTotal limit per hour
X-RateLimit-RemainingRemaining requests

If you hit the limit, wait for the reset or contact us for higher limits.

Endpoints

GET/articles

List Articles

Returns a paginated list of published articles, sorted by publication date (newest first).

Parameters

NameTypeDescription
localestringLanguage (pt, en, es, fr). Default: pt
categorystringFilter by category slug
per_pageintegerItems per page (1-50). Default: 20
pageintegerPage number

Response

{
  "data": [
    {
      "id": 123,
      "title": "...",
      "slug": "...",
      "summary": "...",
      "content": "...",
      "category": { "name": "...", "slug": "..." },
      "source": "TechCrunch",
      "source_url": "https://...",
      "image_url": "https://...",
      "published_at": "2026-02-15T10:00:00+00:00",
      "locale": "pt",
      "views": 1234,
      "reactions": { "like": 10, "dislike": 2 }
    }
  ],
  "meta": {
    "current_page": 1,
    "last_page": 340,
    "per_page": 20,
    "total": 6800
  }
}
GET/articles/{slug}

Get Article

Returns a full article by its translated slug.

Parameters

NameTypeDescription
localestringLanguage (pt, en, es, fr). Default: pt

Response

{
  "data": {
    "id": 123,
    "title": "...",
    "slug": "...",
    "summary": "...",
    "content": "<p>Full HTML content...</p>",
    "category": { "name": "...", "slug": "..." },
    "source": "TechCrunch",
    "source_url": "https://...",
    "image_url": "https://...",
    "published_at": "2026-02-15T10:00:00+00:00",
    "locale": "pt",
    "views": 1234,
    "reactions": { "like": 10, "dislike": 2 }
  }
}

// 404
{
  "error": "not_found",
  "message": "Article not found."
}
GET/categories

List Categories

Returns all active categories with article counts.

Parameters

NameTypeDescription
localestringLanguage (pt, en, es, fr). Default: pt

Response

{
  "data": [
    {
      "id": 1,
      "name": "Artificial Intelligence",
      "slug": "artificial-intelligence",
      "news_count": 3030
    },
    {
      "id": 2,
      "name": "Hardware",
      "slug": "hardware",
      "news_count": 859
    },
    {
      "id": 5,
      "name": "Cybersecurity",
      "slug": "cybersecurity",
      "news_count": 1241
    }
  ]
}

Article Fields

FieldTypeDescription
idintegerUnique identifier
titlestringArticle title in the requested language
slugstringArticle slug (used in the URL)
summarystringShort article summary
contentstringHTML content (truncated in list, full in detail)
categoryobject|nullObject with category name and slug
sourcestring|nullOriginal source name
source_urlstringOriginal source URL
image_urlstring|nullCover image URL
published_atstringPublication date in ISO 8601 format
localestringLanguage of the returned content
viewsintegerNumber of views
reactionsobjectReaction counts (like/dislike)

Code Examples

cURL

# List latest articles in English
curl "https://api.hubnews.ai/api/v1/public/articles?locale=en&per_page=5"

# Get a specific article
curl "https://api.hubnews.ai/api/v1/public/articles/article-slug-here?locale=pt"

# List categories
curl "https://api.hubnews.ai/api/v1/public/categories?locale=en"

# Filter by category
curl "https://api.hubnews.ai/api/v1/public/articles?locale=pt&category=artificial-intelligence&per_page=10"

JavaScript (fetch)

const API_BASE = "https://api.hubnews.ai/api/v1/public";

// List articles
async function getArticles({ locale = "pt", category, page = 1, perPage = 20 } = {}) {
  const params = new URLSearchParams({ locale, page: String(page), per_page: String(perPage) });
  if (category) params.set("category", category);

  const res = await fetch(`${API_BASE}/articles?${params}`);
  if (!res.ok) throw new Error(`API error: ${res.status}`);
  return res.json(); // { data: Article[], meta: { ... } }
}

// Get single article
async function getArticle(slug, locale = "pt") {
  const res = await fetch(`${API_BASE}/articles/${slug}?locale=${locale}`);
  if (!res.ok) throw new Error(`API error: ${res.status}`);
  return res.json(); // { data: Article }
}

// Get categories
async function getCategories(locale = "pt") {
  const res = await fetch(`${API_BASE}/categories?locale=${locale}`);
  if (!res.ok) throw new Error(`API error: ${res.status}`);
  return res.json(); // { data: Category[] }
}

Errors

The API returns standardized JSON responses for errors:

StatusDescription
404Resource not found
422Invalid parameters
429Rate limit exceeded
500Internal server error
// 404 example
{
  "error": "not_found",
  "message": "Article not found."
}

// 422 example (validation)
{
  "message": "The locale field must be one of: pt, en, es, fr.",
  "errors": { "locale": ["The locale field must be one of: pt, en, es, fr."] }
}

// 429 example
HTTP 429 Too Many Requests
Retry-After: 3600

Need higher limits?

If your project requires more than 1,000 requests per hour, get in touch. We can offer custom limits for partners and integrators.

Contact Us

HubNews

Receive weekly the main news and analyses about Artificial Intelligence directly in your email.

Sign Up for Free

News

  • Home Page
  • Feed
  • Guides
  • AI Products
  • Top
  • Deep Dives
  • Search

More

  • Games
  • Tools
  • Subscribe Free
  • Podcast

Information

  • About Us
  • Contact
  • FAQ
  • Developers
  • Sponsors

Legal

  • Privacy Policy
  • Terms of Service

© 2026 HubNews.ai. All rights reserved.