news
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Primary Meta -->
<title>Free News API – 5,000 Free Requests per Day | FreeNewsApi.io</title>
<meta name="description" content="Free News API with 5,000 requests per day and 2 requests per second. Search global news by country, language, topic, publisher and date. Get full article text via REST API.">
<meta name="robots" content="index, follow">
<meta name="author" content="FreeNewsApi.io">
<link rel="canonical" href="https://www.freenewsapi.io/">
<!-- Open Graph (Facebook, LinkedIn, etc.) -->
<meta property="og:type" content="website">
<meta property="og:title" content="Free News API – 5,000 Free Requests per Day">
<meta property="og:description" content="Search and retrieve global news with a free API. Filter by country, language, category and more. Includes full article content.">
<meta property="og:url" content="https://www.freenewsapi.io/">
<meta property="og:site_name" content="FreeNewsApi.io">
<meta property="og:image" content="https://www.freenewsapi.io/og-image.png">
<!-- Twitter / X -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Free News API – 5,000 Free Requests per Day">
<meta name="twitter:description" content="Free REST API for global news with full article text, filters and generous daily limits.">
<meta name="twitter:image" content="https://www.freenewsapi.io/og-image.png">
<!-- Theme / UI -->
<meta name="theme-color" content="#2764ff">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jsvectormap/dist/css/jsvectormap.min.css">
<link href="/css/style.css" rel="stylesheet">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebSite",
"@id": "https://www.freenewsapi.io/#website",
"url": "https://www.freenewsapi.io/",
"name": "FreeNewsApi.io",
"description": "Free News API with 5,000 requests per day and 2 requests per second. Search global news by country, language, topic, publisher and date.",
"inLanguage": "en"
},
{
"@type": "Organization",
"@id": "https://www.freenewsapi.io/#organization",
"name": "FreeNewsApi.io",
"url": "https://www.freenewsapi.io/",
"logo": "https://www.freenewsapi.io/favicon-32x32.png"
},
{
"@type": "SoftwareApplication",
"@id": "https://www.freenewsapi.io/#software",
"name": "FreeNewsApi.io",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Web",
"url": "https://www.freenewsapi.io/",
"description": "Free REST API for searching and retrieving global news, with filters by country, language, category, publisher and author, plus full article details by UUID.",
"provider": {
"@id": "https://www.freenewsapi.io/#organization"
},
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}
]
}
</script>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//spadacenta.com/matomo/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '2']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head>
<body>
<div class="page-bg"></div>
<nav class="navbar navbar-expand-lg fixed-top navbar-light site-navbar">
<div class="container">
<a class="navbar-brand fw-bold d-flex align-items-center gap-2" href="/index.php">
<div class="logo-badge">F</div>
<span>FreeNewsApi<span class="text-primary">.io</span></span>
</a>
<button class="navbar-toggler border-0 shadow-none" type="button"
data-bs-toggle="collapse"
data-bs-target="#mainNav"
aria-controls="mainNav"
aria-expanded="false">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="mainNav">
<ul class="navbar-nav ms-auto align-items-lg-center gap-lg-2">
<li class="nav-item">
<a class="nav-link" href="/index.php#comparison">Comparison</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/index.php#coverage-map">Coverage</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/index.php#categories">Categories</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/index.php#examples">Examples</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/index.php#endpoints">Endpoints</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/index.php#faq">FAQ</a>
</li>
<li class="nav-item ms-lg-2">
<a class="btn btn-outline-primary rounded-pill px-4"
href="/docs/index.php">
Docs
</a>
</li>
<li class="nav-item ms-lg-2">
<a class="btn btn-primary rounded-pill px-4"
href="/user/register.php">
Get Free API Key
</a>
</li>
</ul>
</div>
</div>
</nav>
<main>
<section class="hero-section" id="home">
<div class="container position-relative">
<div class="row align-items-center g-5">
<div class="col-lg-6">
<span class="badge rounded-pill text-bg-light border hero-badge mb-3">
<i class="bi bi-stars me-2 text-primary"></i>Free REST API. No paid tiers.
</span>
<h1 class="display-3 fw-black lh-sm mb-3">Free News API with 5,000 requests per day</h1>
<p class="lead text-secondary mb-4 pe-lg-4">
Search and retrieve global news through a free API with a generous daily allowance,
a 2 requests/second rate limit, country and language filters, categories, and full article details.
</p>
<div class="hero-proof-grid hero-proof-grid--compact mb-4">
<div class="proof-pill">
<strong>5,000/day</strong>
<span>free requests</span>
</div>
<div class="proof-pill">
<strong>2 req/sec</strong>
<span>rate limit</span>
</div>
</div>
<div class="d-flex flex-column flex-sm-row gap-3 mb-4">
<a href="/user/register.php" class="btn btn-primary btn-lg rounded-pill px-4">Get Free API Key</a>
<a href="https://www.freenewsapi.io/docs/" target="_blank" rel="noopener" class="btn btn-light btn-lg rounded-pill px-4 border">Read the Docs</a>
</div>
</div>
<div class="col-lg-6">
<div class="hero-card shadow-lg">
<div class="hero-card-top d-flex justify-content-between align-items-center border-bottom">
<div class="d-flex gap-2">
<span class="dot bg-danger-subtle"></span>
<span class="dot bg-warning-subtle"></span>
<span class="dot bg-success-subtle"></span>
</div>
<span class="small text-secondary">Real API example</span>
</div>
<div class="p-4 p-lg-5">
<div class="request-line mb-4">
<span class="request-method">GET</span>
<span class="request-url">/v1/news?language=en&country=us&order_by=archive&in_title=trump</span>
</div>
<pre class="code-block mb-4"><code>{
"data": [
{
"uuid": "ee1cab5b-77fe-44f5-952f-3c16e0786b7a", "title": "Trump warns Tehran ‘more to follow’ after strike destroys Iran’s largest bridge", "published_at": "2026-04-03T04:51:12.000Z", "publisher": "The Guardian"
},
{
"uuid": "6a49c992-2642-4e8b-a61a-d40141f0b250", "title": "Republican senators McConnell and Tillis break with Trump on Nato withdrawal", "published_at": "2026-04-02T16:30:00.000Z", "publisher": "The Guardian"
}
"... 8 more results"
],
"meta": {
"page_size": 10,
"returned": 10,
"has_more": true,
"order_by": "archive",
"filters": {
"published_after": null, "published_before": null, "language": "en", "country": "US", "topic": null, "publisher_uuid": null, "author_uuid": null, "q": null, "in_title": "trump", "in_body": null, "in_subtitle": null
},
"offset": 0,
"next_offset": 10,
"next_cursor": "eyJ2IjoxLCJvcmRlcl9ieSI6ImFyY2hpdmUiLCJzaWciOiJkNzJlNzAzNGVjMWM4ODgwZWZiZGViMTNmYTU2MDI1MWMxMTZjNTA0YjQ4Yjk4YTMwYTc5ZjExYWZkNGE1NWY0IiwibGFzdF9pZCI6MjA0NjV9"
}
}
</code></pre>
<div class="d-flex justify-content-between align-items-center mb-4">
<span class="small text-secondary">Real response (truncated)</span>
<button class="btn btn-sm btn-light border rounded-pill px-3"
data-bs-toggle="modal"
data-bs-target="#heroResponseModal">
View full response
</button>
</div>
<div class="hero-api-trust">
<span><i class="bi bi-check-circle-fill text-success me-2"></i>Country, language and category filters</span>
<span><i class="bi bi-check-circle-fill text-success me-2"></i>Title, subtitle and body search</span>
<span><i class="bi bi-check-circle-fill text-success me-2"></i>Full article details by UUID</span>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="section-space" id="comparison">
<div class="container">
<div class="text-center section-heading mx-auto mb-5">
<span class="eyebrow">Comparison</span>
<h2 class="fw-bold mb-3">A free tier built to be used, not just tested</h2>
<p class="text-secondary mb-0">
FreeNewsApi offers one of the most generous free plans available compared to typical news APIs.
</p>
</div>
<p class="lead text-center mb-4">
<strong>5,000 free requests per day</strong> with a <strong>2 requests/second rate limit</strong>.
</p>
<div class="comparison-table-wrapper">
<table class="table comparison-table align-middle mb-0">
<thead>
<tr>
<th>Provider</th>
<th>Req/day</th>
<th>Req/month</th>
<th>Rate limit</th>
<th>Delayed data</th>
<th>Article text (body)</th>
<th>Text search</th>
<th>Source</th>
</tr>
</thead>
<tbody>
<tr>
<td class="fw-bold highlight">FreeNewsApi</td>
<td class="highlight fw-bold">5,000</td>
<td class="highlight">—</td>
<td class="highlight">2 req/sec</td>
<td class="highlight">No</td>
<td class="highlight">Yes</td>
<td class="highlight">Yes</td>
<td>—</td>
</tr>
<tr>
<td><a href="https://newsapi.org/pricing" target="_blank" rel="noopener">NewsAPI.org</a></td>
<td>100</td>
<td>—</td>
<td>Not specified</td>
<td>Yes (24h)</td>
<td>No</td>
<td>Limited</td>
<td><a href="https://newsapi.org/pricing" target="_blank" rel="noopener">pricing</a></td>
</tr>
<tr>
<td><a href="https://gnews.io/pricing" target="_blank" rel="noopener">GNews</a></td>
<td>100</td>
<td>—</td>
<td>~1 req/sec</td>
<td>Yes (12h)</td>
<td>No</td>
<td>Limited</td>
<td><a href="https://gnews.io/pricing" target="_blank" rel="noopener">pricing</a></td>
</tr>
<tr>
<td><a href="https://newsdata.io/pricing" target="_blank" rel="noopener">NewsData.io</a></td>
<td>200</td>
<td>—</td>
<td>Not specified</td>
<td>Yes (12h)</td>
<td>Partial</td>
<td>Yes</td>
<td><a href="https://newsdata.io/pricing" target="_blank" rel="noopener">pricing</a></td>
</tr>
<tr>
<td><a href="https://mediastack.com/pricing" target="_blank" rel="noopener">Mediastack</a></td>
<td>—</td>
<td>100</td>
<td>Not specified</td>
<td>Yes</td>
<td>No</td>
<td>Limited</td>
<td><a href="https://mediastack.com/pricing" target="_blank" rel="noopener">pricing</a></td>
</tr>
<tr>
<td><a href="https://newsapi.ai/plans" target="_blank" rel="noopener">NewsAPI.ai</a></td>
<td>—</td>
<td>—</td>
<td>Token-based</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
<td><a href="https://newsapi.ai/plans" target="_blank" rel="noopener">plans</a></td>
</tr>
</tbody>
</table>
</div>
<p class="comparison-note text-center mt-3 mb-0">
Verified against public pricing pages on April 11, 2026. Limits and features may change over time.
</p>
</div>
</section>
<!--
<section class="section-space realtime-section" id="realtime">
<div class="container">
<div class="realtime-card">
<div class="row g-5 align-items-center">
<div class="col-lg-5">
<span class="eyebrow">Realtime & structured data</span>
<h2 class="fw-bold mb-3">From articles to structured news events</h2>
<p class="text-secondary mb-4">
FreeNewsApi provides articles through a traditional REST API. It is designed for searching,
retrieving and processing news content when your application needs it.
</p>
<p class="text-secondary mb-4">
If your product needs a continuous flow of information, SocketNews is built for a different workflow:
it monitors news in realtime, processes incoming articles and delivers structured data through a persistent socket connection.
</p>
<a href="https://socketnews.com" target="_blank" rel="noopener" class="btn btn-primary rounded-pill px-4">
Explore SocketNews
</a>
</div>
<div class="col-lg-7">
<div class="realtime-comparison-grid">
<div class="realtime-mini-card">
<div class="realtime-mini-head">
<div class="feature-icon">
<i class="bi bi-newspaper"></i>
</div>
<div>
<h3 class="realtime-mini-title">FreeNewsApi</h3>
<p class="realtime-mini-subtitle mb-0">REST access to articles</p>
</div>
</div>
<ul class="realtime-list">
<li>Search news articles on demand</li>
<li>Retrieve article metadata and full body text</li>
<li>Filter by country, language, topic, publisher and date</li>
<li>Process the article data inside your own application</li>
</ul>
</div>
<div class="realtime-mini-card realtime-mini-card-accent">
<div class="realtime-mini-head">
<div class="feature-icon">
<i class="bi bi-broadcast-pin"></i>
</div>
<div>
<h3 class="realtime-mini-title">SocketNews</h3>
<p class="realtime-mini-subtitle mb-0">Structured news stream</p>
</div>
</div>
<ul class="realtime-list">
<li>Receive updates without polling</li>
<li>Monitor standard channels and custom keywords</li>
<li>Get structured facts extracted from articles</li>
<li>Build event-driven monitoring, alerting and newsroom workflows</li>
</ul>
</div>
</div>
<div class="realtime-note mt-4">
<i class="bi bi-lightning-charge-fill"></i>
<span>
Use FreeNewsApi when you need article search and retrieval. Use SocketNews when you need realtime,
processed and structured information delivered as events.
</span>
</div>
</div>
</div>
</div>
</div>
</section>
-->
<section class="section-space bg-light" id="dataset">
<div class="container">
<div class="text-center section-heading mx-auto mb-5">
<span class="eyebrow">Dataset</span>
<h2 class="fw-bold mb-3">Recent volume and current coverage</h2>
<p class="text-secondary mb-0">
Coverage size and recent ingestion activity based on the last 7 full days.
</p>
</div>
<div class="row g-4 align-items-stretch">
<div class="col-lg-5">
<div class="dataset-kpi-grid">
<div class="stat-card stat-card-large">
<div class="stat-value">71</div>
<div class="stat-label">countries</div>
</div>
<div class="stat-card stat-card-large">
<div class="stat-value">88</div>
<div class="stat-label">languages</div>
</div>
<div class="stat-card stat-card-large">
<div class="stat-value">118,802</div>
<div class="stat-label">avg articles/day (7d)</div>
</div>
<div class="stat-card stat-card-large">
<div class="stat-value">196,795</div>
<div class="stat-label">publishers</div>
</div>
<div class="stat-card stat-card-large dataset-kpi-wide">
<div class="stat-value">840,484</div>
<div class="stat-label">authors</div>
</div>
</div>
</div>
<div class="col-lg-7">
<div class="chart-card h-100">
<div class="chart-card-head">
<div>
<h3 class="chart-title">Articles per day</h3>
<p class="chart-subtitle mb-0">Last 7 full days</p>
</div>
</div>
<div class="chart-wrap">
<canvas id="articlesPerDayChart"></canvas>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="section-space" id="coverage-map">
<div class="container">
<div class="row align-items-center g-4 mb-4">
<div class="col-lg-6">
<span class="eyebrow">Coverage</span>
<h2 class="fw-bold mb-3">Explore available countries and languages</h2>
</div>
<div class="col-lg-6">
<p class="text-secondary mb-0">
The map highlights countries currently covered by the API.
Hover a country to see the languages currently available in the fetch job catalog.
</p>
</div>
</div>
<div class="map-topbar">
<span><strong>71</strong> countries</span>
<span><strong>88</strong> languages</span>
</div>
<div class="map-card p-3 p-lg-4">
<div id="worldCoverageMap" style="height: 520px;"></div>
</div>
</div>
</section>
<section class="section-space bg-light" id="categories">
<div class="container">
<div class="row align-items-center g-4">
<div class="col-lg-6">
<span class="eyebrow">Categories</span>
<h2 class="fw-bold mb-3">Browse available news categories</h2>
</div>
<div class="col-lg-6">
<p class="text-secondary mb-0">
Open the full category list to see the topics currently available across the fetch catalog.
</p>
</div>
</div>
<div class="category-cta-card">
<div>
<h3 class="category-cta-title">Available categories</h3>
<p class="category-cta-text mb-0">
View the current topic list used to organize and filter the dataset.
</p>
</div>
<button class="btn btn-light border rounded-pill px-4"
data-bs-toggle="modal"
data-bs-target="#categoriesModal">
View available categories
</button>
</div>
</div>
</section>
<section class="section-space" id="examples">
<div class="container">
<div class="text-center section-heading mx-auto mb-5">
<span class="eyebrow">Examples</span>
<h2 class="fw-bold mb-3">Search first, then fetch the full article</h2>
<p class="text-secondary mb-0">
Use the listing endpoint to discover matching articles, then retrieve complete article text and metadata by UUID.
</p>
</div>
<div class="row g-4">
<div class="col-lg-6">
<div class="example-card h-100">
<div class="example-label">Search articles</div>
<div class="request-line mb-4">
<span class="request-method">GET</span>
<span class="request-url">/v1/news?language=en&country=us&order_by=archive&in_title=trump</span>
</div>
<pre class="code-block mb-3"><code>{
"data": [
{ "uuid": "ee1cab5b-...", "title": "Trump warns Tehran..." },
"... 9 more results"
],
"meta": {
"returned": 10,
"has_more": true
}
}</code></pre>
<div class="example-footer">
<span class="small text-secondary">Use the returned UUID to fetch the full article.</span>
<button class="btn btn-sm btn-light border rounded-pill px-3"
data-bs-toggle="modal"
data-bs-target="#newsExampleModal">
View full response
</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="example-card h-100">
<div class="example-label">Get full article</div>
<div class="request-line mb-4">
<span class="request-method">GET</span>
<span class="request-url">/v1/details?uuid=ee1cab5b-77fe-44f5-952f-3c16e0786b7a</span>
</div>
<pre class="code-block mb-3"><code>{
"data": {
"uuid": "ee1cab5b-...",
"title": "Trump warns Tehran ‘more to follow’...",
"publisher": "The Guardian",
"topics": ["politics", "world"],
"languages": ["en"],
"published_at": "2026-04-03T04:51:12.000Z",
"body": "Donald Trump claimed responsibility..."
}
}</code></pre>
<div class="example-footer">
<span class="small text-secondary">Returns the full article body and metadata.</span>
<button class="btn btn-sm btn-light border rounded-pill px-3"
data-bs-toggle="modal"
data-bs-target="#detailsExampleModal">
View full response
</button>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="section-space bg-light" id="filters">
<div class="container">
<div class="text-center section-heading mx-auto mb-5">
<span class="eyebrow">Filtering</span>
<h2 class="fw-bold mb-3">Filter the dataset the way you need</h2>
<p class="text-secondary mb-0">
Narrow results with a combination of structured filters and text search.
</p>
</div>
<div class="row g-4">
<div class="col-sm-6 col-lg-4">
<div class="feature-card feature-card-horizontal h-100">
<div class="feature-icon">
<i class="bi bi-globe2"></i>
</div>
<div class="feature-content">
<h5 class="feature-title">Country</h5>
<p class="feature-text">Limit results to a specific country code.</p>
</div>
</div>
</div>
<div class="col-sm-6 col-lg-4">
<div class="feature-card feature-card-horizontal h-100">
<div class="feature-icon">
<i class="bi bi-translate"></i>
</div>
<div class="feature-content">
<h5 class="feature-title">Language</h5>
<p class="feature-text">Filter articles by language code and inspect available combinations.</p>
</div>
</div>
</div>
<div class="col-sm-6 col-lg-4">
<div class="feature-card feature-card-horizontal h-100">
<div class="feature-icon">
<i class="bi bi-tags"></i>
</div>
<div class="feature-content">
<h5 class="feature-title">Category</h5>
<p class="feature-text">Use topic-based filtering to focus on the sections that matter.</p>
</div>
</div>
</div>
<div class="col-sm-6 col-lg-4">
<div class="feature-card feature-card-horizontal h-100">
<div class="feature-icon">
<i class="bi bi-building"></i>
</div>
<div class="feature-content">
<h5 class="feature-title">Publisher</h5>
<p class="feature-text">Search or filter by publisher through dedicated lookup endpoints.</p>
</div>
</div>
</div>
<div class="col-sm-6 col-lg-4">
<div class="feature-card feature-card-horizontal h-100">
<div class="feature-icon">
<i class="bi bi-person"></i>
</div>
<div class="feature-content">
<h5 class="feature-title">Author</h5>
<p class="feature-text">Filter by author using lookup results and author UUIDs.</p>
</div>
</div>
</div>
<div class="col-sm-6 col-lg-4">
<div class="feature-card feature-card-horizontal h-100">
<div class="feature-icon">
<i class="bi bi-calendar3"></i>
</div>
<div class="feature-content">
<h5 class="feature-title">Date range</h5>
<p class="feature-text">Use published_before and published_after to narrow time windows.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="section-space" id="endpoints">
<div class="container">
<div class="text-center section-heading mx-auto mb-5">
<span class="eyebrow">Endpoints</span>
<h2 class="fw-bold mb-3">Everything you need to explore the dataset</h2>
<p class="text-secondary mb-0">
Start with lightweight article search, then fetch complete details only when needed.
</p>
</div>
<div class="row g-4">
<div class="col-md-6 col-lg-4">
<div class="use-card feature-card-horizontal h-100">
<div class="feature-icon">
<i class="bi bi-newspaper"></i>
</div>
<div class="feature-content">
<h5 class="feature-title endpoint-title">/v1/news</h5>
<p class="feature-text">Lightweight article listing with filters, search, sorting and pagination.</p>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="use-card feature-card-horizontal h-100">
<div class="feature-icon">
<i class="bi bi-file-text"></i>
</div>
<div class="feature-content">
<h5 class="feature-title endpoint-title">/v1/details</h5>
<p class="feature-text">Full article details by UUID, including body text and original article URL.</p>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="use-card feature-card-horizontal h-100">
<div class="feature-icon">
<i class="bi bi-building"></i>
</div>
<div class="feature-content">
<h5 class="feature-title endpoint-title">/v1/publishers</h5>
<p class="feature-text">Publisher lookup endpoint for search and autocomplete workflows.</p>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="use-card feature-card-horizontal h-100">
<div class="feature-icon">
<i class="bi bi-person"></i>
</div>
<div class="feature-content">
<h5 class="feature-title endpoint-title">/v1/authors</h5>
<p class="feature-text">Search authors and use the returned identifiers to refine article queries.</p>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="use-card feature-card-horizontal h-100">
<div class="feature-icon">
<i class="bi bi-translate"></i>
</div>
<div class="feature-content">
<h5 class="feature-title endpoint-title">/v1/languages</h5>
<p class="feature-text">Discover which languages are currently available for a specific country.</p>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="use-card feature-card-horizontal h-100">
<div class="feature-icon">
<i class="bi bi-tags"></i>
</div>
<div class="feature-content">
<h5 class="feature-title endpoint-title">/v1/topics</h5>
<p class="feature-text">Inspect the list of topics currently available across the API catalog.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="pb-5" id="docs">
<div class="container">
<div class="cta-card text-center p-4 p-lg-5">
<span class="eyebrow justify-content-center">Documentation</span>
<h2 class="fw-bold mb-3">Read the full API reference</h2>
<p class="text-secondary mb-4">
Explore parameters, responses, examples and interactive documentation in the public docs.
</p>
<div class="d-flex flex-column flex-sm-row justify-content-center gap-3">
<a href="https://www.freenewsapi.io/docs/" target="_blank" rel="noopener" class="btn btn-primary btn-lg rounded-pill px-4">
Open Docs
</a>
<a href="/user/register.php" class="btn btn-light btn-lg rounded-pill px-4 border">
Get Free API Key
</a>
</div>
</div>
</div>
</section>
<section class="section-space" id="faq">
<div class="container">
<div class="row g-5 align-items-start">
<div class="col-lg-5">
<span class="eyebrow">FAQ</span>
<h2 class="fw-bold mb-3">Frequently asked questions</h2>
<p class="text-secondary mb-0">
Quick answers to the most common questions about the API.
</p>
</div>
<div class="col-lg-7">
<div class="accordion custom-accordion" id="faqAccordion">
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#faqOne" aria-expanded="true" aria-controls="faqOne">
Is this really free?
</button>
</h2>
<div id="faqOne" class="accordion-collapse collapse show" data-bs-parent="#faqAccordion">
<div class="accordion-body">
Yes. FreeNewsApi is free to use and designed to stay free. The REST API you see here is not a limited trial or a gateway to paid tiers.
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faqTwo" aria-expanded="false" aria-controls="faqTwo">
Are there paid tiers?
</button>
</h2>
<div id="faqTwo" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
<div class="accordion-body">
No. The REST API presented here is not part of a paid tier system. It is designed as a standalone free service, not a restricted version of a paid product.
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faqThree" aria-expanded="false" aria-controls="faqThree">
What is the difference between /v1/news and /v1/details?
</button>
</h2>
<div id="faqThree" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
<div class="accordion-body">
<code>/v1/news</code> returns lightweight article results for discovery, filtering and pagination.
<code>/v1/details</code> returns the full article payload for a specific UUID, including body text and metadata.
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faqFour" aria-expanded="false" aria-controls="faqFour">
Can I search only in titles, or also in article text?
</button>
</h2>
<div id="faqFour" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
<div class="accordion-body">
You can do both. The API supports title-specific search as well as broader matching across subtitle and body fields.
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faqFive" aria-expanded="false" aria-controls="faqFive">
Can I filter results by country, language, topic, publisher or author?
</button>
</h2>
<div id="faqFive" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
<div class="accordion-body">
Yes. You can filter by country, language, topic, publisher, author and publication time window.
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faqSix" aria-expanded="false" aria-controls="faqSix">
Does the API return full article content?
</button>
</h2>
<div id="faqSix" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
<div class="accordion-body">
Yes. Full article content is available through the <code>/v1/details</code> endpoint, together with metadata such as publisher, topics, countries, languages and the original article URL.
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faqSeven" aria-expanded="false" aria-controls="faqSeven">
Where can I find all parameters and response formats?
</button>
</h2>
<div id="faqSeven" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
<div class="accordion-body">
The full API reference is available in the public documentation, including endpoints, parameters, examples and response formats.
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container">
<div class="row g-4 align-items-start">
<div class="col-lg-5">
<a class="footer-brand d-inline-flex align-items-center gap-2 text-decoration-none" href="/index.php#home">
<span class="logo-badge">F</span>
<span class="fw-bold text-dark">FreeNewsApi<span class="text-primary">.io</span></span>
</a>
<p class="text-secondary mt-3 mb-0">
Free News API with generous daily usage, global coverage and simple HTTP integration.
</p>
</div>
<div class="col-6 col-md-3 col-lg-2">
<h6 class="footer-title">Product</h6>
<ul class="list-unstyled footer-links mb-0">
<li><a href="/index.php#comparison">Comparison</a></li>
<li><a href="/index.php#coverage-map">Coverage</a></li>
<li><a href="/index.php#categories">Categories</a></li>
<li><a href="/index.php#examples">Examples</a></li>
</ul>
</div>
<div class="col-6 col-md-4 col-lg-2">
<h6 class="footer-title">Resources</h6>
<ul class="list-unstyled footer-links mb-0">
<li><a href="https://www.freenewsapi.io/docs/" target="_blank" rel="noopener">Documentation</a></li>
<li><a href="/terms.php">Terms</a></li>
<li><a href="/privacy.php">Privacy</a></li>
<li><a href="/cookies.php">Cookies</a></li>
</ul>
</div>
<div class="col-md-5 col-lg-3">
<h6 class="footer-title">Account</h6>
<ul class="list-unstyled footer-links mb-0">
<li><a href="/user/register.php">Get API Key</a></li>
<li><a href="/user/login.php">Login</a></li>
</ul>
<p class="footer-copy mt-3 mb-0">
© 2026 FreeNewsApi.io
</p>
</div>
</div>
</div>
</footer>
<div class="modal fade" id="heroResponseModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header modal-header-with-action">
<h5 class="modal-title">Full API Response</h5>
<div class="modal-header-actions">
<button type="button" class="btn btn-sm btn-light border rounded-pill px-3 js-copy-response" data-copy-target="heroResponseCode">
<i class="bi bi-clipboard me-2"></i>Copy response
</button>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
</div>
<div class="modal-body">
<pre class="code-block modal-code-block"><code id="heroResponseCode">{
"data": [
{
"uuid": "ee1cab5b-77fe-44f5-952f-3c16e0786b7a",
"title": "Trump warns Tehran ‘more to follow’ after strike destroys Iran’s largest bridge",
"published_at": "2026-04-03T04:51:12.000Z",
"publisher": "The Guardian"
},
{
"uuid": "6a49c992-2642-4e8b-a61a-d40141f0b250",
"title": "Republican senators McConnell and Tillis break with Trump on Nato withdrawal",
"published_at": "2026-04-02T16:30:00.000Z",
"publisher": "The Guardian"
},
{
"uuid": "0e936d87-3d0e-4f1e-908c-69a5af81818a",
"title": "Musicians Union Stands With Bruce Springsteen in ‘Complete Solidarity’ Against Trump",
"published_at": "2026-04-02T22:10:09.000Z",
"publisher": "Rolling Stone"
},
{
"uuid": "24f73fe5-e98c-4c88-8892-6568686725fc",
"title": "Touchy Trump Throws Bizarre Tantrum at Rocker Bruce Springsteen Making Fun of Him",
"published_at": "2026-04-03T10:27:00.000Z",
"publisher": "The Daily Beast"
},
{
"uuid": "db83171d-a6c9-46a2-a1cb-b2a951fef19c",
"title": "Tiger Woods called Trump after DUI crash, he told cop on bodycam video",
"published_at": "2026-04-02T23:22:39.000Z",
"publisher": "CNBC"
},
{
"uuid": "b0c4d1f1-329d-411d-9270-b5c3dcb57a88",
"title": "Trump says workers must pay for imperialist war with cuts to Medicare, Medicaid and daycare",
"published_at": "2026-04-03T02:25:34.000Z",
"publisher": "World Socialist Web Site"
},
{
"uuid": "42e57f7b-4700-40aa-8307-6a592bb39f8d",
"title": "Federal funding for reproductive health care could lapse Wednesday due to Trump administration delays",
"published_at": "2026-03-31T21:36:32.000Z",
"publisher": "NBC News"
},
{
"uuid": "472ac401-dcf7-445a-b415-25bd3c0fdb38",
"title": "Spain hits back at Trump in escalating row over euthanasia",
"published_at": "2026-04-01T14:05:00.000Z",
"publisher": "politico.eu"
},
{
"uuid": "cac2aaa2-a196-4178-b2db-50ff3909f536",
"title": "A federal office designed to stave off the next financial crisis is being dismantled by the Trump administration",
"published_at": "2026-03-30T15:59:58.000Z",
"publisher": "Government Executive"
},
{
"uuid": "45a18bb1-576e-4e10-9d07-b9d55dbe5d01",
"title": "Brian Cox lets rip on Trump, Farage, Johnny Depp and sex at 79",
"published_at": "2026-04-03T04:00:00.000Z",
"publisher": "The Times"
}
],
"meta": {
"page_size": 10,
"returned": 10,
"has_more": true,
"order_by": "archive",
"filters": {
"published_after": null,
"published_before": null,
"language": "en",
"country": "US",
"topic": null,
"publisher_uuid": null,
"author_uuid": null,
"q": null,
"in_title": "trump",
"in_body": null,
"in_subtitle": null
},
"offset": 0,
"next_offset": 10,
"next_cursor": "eyJ2IjoxLCJvcmRlcl9ieSI6ImFyY2hpdmUiLCJzaWciOiJkNzJlNzAzNGVjMWM4ODgwZWZiZGViMTNmYTU2MDI1MWMxMTZjNTA0YjQ4Yjk4YTMwYTc5ZjExYWZkNGE1NWY0IiwibGFzdF9pZCI6MjA0NjV9"
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="modal fade" id="newsExampleModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header modal-header-with-action">
<h5 class="modal-title">Search Articles Response</h5>
<div class="modal-header-actions">
<button type="button" class="btn btn-sm btn-light border rounded-pill px-3 js-copy-response" data-copy-target="newsResponseCode">
<i class="bi bi-clipboard me-2"></i>Copy response
</button>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
</div>
<div class="modal-body">
<pre class="code-block modal-code-block"><code id="newsResponseCode">{
"data": [
{
"uuid": "ee1cab5b-77fe-44f5-952f-3c16e0786b7a",
"title": "Trump warns Tehran ‘more to follow’ after strike destroys Iran’s largest bridge",
"published_at": "2026-04-03T04:51:12.000Z",
"publisher": "The Guardian"
},
{
"uuid": "6a49c992-2642-4e8b-a61a-d40141f0b250",
"title": "Republican senators McConnell and Tillis break with Trump on Nato withdrawal",
"published_at": "2026-04-02T16:30:00.000Z",
"publisher": "The Guardian"
},
{
"uuid": "0e936d87-3d0e-4f1e-908c-69a5af81818a",
"title": "Musicians Union Stands With Bruce Springsteen in ‘Complete Solidarity’ Against Trump",
"published_at": "2026-04-02T22:10:09.000Z",
"publisher": "Rolling Stone"
},
{
"uuid": "24f73fe5-e98c-4c88-8892-6568686725fc",
"title": "Touchy Trump Throws Bizarre Tantrum at Rocker Bruce Springsteen Making Fun of Him",
"published_at": "2026-04-03T10:27:00.000Z",
"publisher": "The Daily Beast"
},
{
"uuid": "db83171d-a6c9-46a2-a1cb-b2a951fef19c",
"title": "Tiger Woods called Trump after DUI crash, he told cop on bodycam video",
"published_at": "2026-04-02T23:22:39.000Z",
"publisher": "CNBC"
},
{
"uuid": "b0c4d1f1-329d-411d-9270-b5c3dcb57a88",
"title": "Trump says workers must pay for imperialist war with cuts to Medicare, Medicaid and daycare",
"published_at": "2026-04-03T02:25:34.000Z",
"publisher": "World Socialist Web Site"
},
{
"uuid": "42e57f7b-4700-40aa-8307-6a592bb39f8d",
"title": "Federal funding for reproductive health care could lapse Wednesday due to Trump administration delays",
"published_at": "2026-03-31T21:36:32.000Z",
"publisher": "NBC News"
},
{
"uuid": "472ac401-dcf7-445a-b415-25bd3c0fdb38",
"title": "Spain hits back at Trump in escalating row over euthanasia",
"published_at": "2026-04-01T14:05:00.000Z",
"publisher": "politico.eu"
},
{
"uuid": "cac2aaa2-a196-4178-b2db-50ff3909f536",
"title": "A federal office designed to stave off the next financial crisis is being dismantled by the Trump administration",
"published_at": "2026-03-30T15:59:58.000Z",
"publisher": "Government Executive"
},
{
"uuid": "45a18bb1-576e-4e10-9d07-b9d55dbe5d01",
"title": "Brian Cox lets rip on Trump, Farage, Johnny Depp and sex at 79",
"published_at": "2026-04-03T04:00:00.000Z",
"publisher": "The Times"
}
],
"meta": {
"page_size": 10,
"returned": 10,
"has_more": true,
"order_by": "archive",
"filters": {
"published_after": null,
"published_before": null,
"language": "en",
"country": "US",
"topic": null,
"publisher_uuid": null,
"author_uuid": null,
"q": null,
"in_title": "trump",
"in_body": null,
"in_subtitle": null
},
"offset": 0,
"next_offset": 10,
"next_cursor": "eyJ2IjoxLCJvcmRlcl9ieSI6ImFyY2hpdmUiLCJzaWciOiJkNzJlNzAzNGVjMWM4ODgwZWZiZGViMTNmYTU2MDI1MWMxMTZjNTA0YjQ4Yjk4YTMwYTc5ZjExYWZkNGE1NWY0IiwibGFzdF9pZCI6MjA0NjV9"
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="modal fade" id="detailsExampleModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header modal-header-with-action">
<h5 class="modal-title">Get Full Article Response</h5>
<div class="modal-header-actions">
<button type="button" class="btn btn-sm btn-light border rounded-pill px-3 js-copy-response" data-copy-target="detailsResponseCode">
<i class="bi bi-clipboard me-2"></i>Copy response
</button>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
</div>
<div class="modal-body">
<pre class="code-block modal-code-block"><code id="detailsResponseCode">{
"data": {
"uuid": "ee1cab5b-77fe-44f5-952f-3c16e0786b7a",
"title": "Trump warns Tehran ‘more to follow’ after strike destroys Iran’s largest bridge",
"thumbnail": "https://i.guim.co.uk/img/media/dea420d315c126046f3a27553e9a0695fd4c88e4/227_130_1651_1320/master/1651.jpg?width=465&dpr=1&s=none&crop=none",
"publisher": "The Guardian",
"authors": [
"Dan Sabbagh",
"https://www.theguardian.com/profile/dan-sabbagh"
],
"topics": [
"politics",
"world"
],
"countries": [
"AU",
"CA",
"GB",
"IL",
"MY",
"NG",
"PK",
"US"
],
"languages": [
"en"
],
"published_at": "2026-04-03T04:51:12.000Z",
"original_url": "https://www.theguardian.com/world/2026/apr/02/trump-warns-tehran-more-to-follow-after-strike-destroys-irans-largest-bridge",
"body": "Donald Trump claimed responsibility for destroying Iran’s largest bridge, a day after he threatened to bomb the country “back to the stone ages” if a deal to end the five-week-long war he started was not reached. The US president shared footage of part of the newly built 136 metre-high $400m B1 suspension bridge between Tehran and Karaj collapsing dramatically on to the causeway below amid a rising plume of black smoke. Eight people were killed and 95 wounded, according to Karaj, Iran’s state media. The middle of the bridge was struck twice. Later imagery showed a clear gap at the heart of what had been one of Iran’s premier infrastructure projects. “The biggest bridge in Iran comes tumbling down, never to be used again,” the US president posted on the Truth Social website, and he warned there would be “much more to follow” if a settlement was not reached. Footage shows Iranian bridge destroyed by strikes – video It was not clear if the bridge was being used by civilians at the time, though there appeared to be a lorry on one side of the bridge. One video appeared to show a projectile hitting the span where there was already damage. A day earlier, in a primetime speech Trump had declared the war the US and Israel launched on Iran on 28 February was a success “nearing completion ”, and that the US would “very shortly” achieve nearly all its strategic objectives. But in his White House address, the president also repeated a threat to destroy Iran’s power plants, potentially cutting off electricity to millions of people. “We are going to hit each and every one of their electric generating plants very hard and probably simultaneously,” he said. He doubled down on that threat in a social media post after the bridge strike. The attack on the bridge was one of several confirmed attacks in Iran this week, despite the difficulty of getting unsanctioned information out of the country, where the internet has been shut down by the authorities. Footage of a major strike earlier this week on a missile base in the city of Isfahan was confirmed on Thursday as genuine, with fiery plumes and secondary explosions filmed from a nearby car, whose driver expresses surprise at the scale of the attack. Isfahan is also where Iran is thought to have moved some or all of its 440kg stockpile of 60% enriched uranium, which in theory could be used to make 10 nuclear bombs if it could be enriched to 90% if Tehran still had the technology available. There has been speculation in the US that Trump has considered a high-risk airborne raid to seize the radioactive material from its underground storage – though the president said late on Wednesday that it was buried so deeply that “I don’t care”. Though most observers took Trump at his word, the US president has in the past engaged in misdirection. On 28 February, the US and Israel attacked and killed Iran’s supreme leader Ali Khamenei and several associates at a point when negotiations over a new nuclear deal were thought to bear fruit. Iran also said the Pasteur medical institute in Tehran was hit on Thursday. Israel said it had struck a headquarters used by Iran’s Revolutionary Guard to finance armed proxies across the Middle East the day before. Iran said it would conduct “more crushing, broader and more destructive” attacks in the future. The war would continue until the “permanent regret and surrender” of Iran’s enemies, said Ebrahim Zolfaqari, spokesperson for the Iranian military’s Khatam al-Anbiya central headquarters. Iran, however, has suffered far more than the US and Israel, in more than 15,000 bombing raids since the start of the war. At least 1,900 people have been killed and 20,000 injured in Iran since the start of the war, according to a rough estimate by the International Red Cross and Red Crescent Societies. Oil prices jumped by 7% a barrel to $108 as there appeared to be no immediate sign of the conflict ending. António Guterres, the UN secretary general, warned that the world is “on the edge of a wider war” with catastrophic global implications as he called for an end to the fighting."
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="modal fade" id="categoriesModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Available categories</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="category-modal-grid">
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-compass-drafting"></i></span>
<span class="category-modal-name">arts-design</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-baseball"></i></span>
<span class="category-modal-name">baseball</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-basketball"></i></span>
<span class="category-modal-name">basketball</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-wand-magic-sparkles"></i></span>
<span class="category-modal-name">beauty</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-briefcase"></i></span>
<span class="category-modal-name">business</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-star"></i></span>
<span class="category-modal-name">celebrities</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-hand-fist"></i></span>
<span class="category-modal-name">combat sports</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-baseball-bat-ball"></i></span>
<span class="category-modal-name">cricket</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-tag"></i></span>
<span class="category-modal-name">custom_search</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-bicycle"></i></span>
<span class="category-modal-name">cycling</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-bitcoin"></i></span>
<span class="category-modal-name">digital currencies</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-chart-line"></i></span>
<span class="category-modal-name">economy</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-graduation-cap"></i></span>
<span class="category-modal-name">education</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-bolt"></i></span>
<span class="category-modal-name">energy</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-film"></i></span>
<span class="category-modal-name">entertainment</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-leaf"></i></span>
<span class="category-modal-name">environment</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-shirt"></i></span>
<span class="category-modal-name">fashion</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-money-bill-trend-up"></i></span>
<span class="category-modal-name">finance</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-utensils"></i></span>
<span class="category-modal-name">food</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-futbol"></i></span>
<span class="category-modal-name">football</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-mobile-screen-button"></i></span>
<span class="category-modal-name">gadgets</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-gamepad"></i></span>
<span class="category-modal-name">gaming</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-mountain"></i></span>
<span class="category-modal-name">geology</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-golf-ball-tee"></i></span>
<span class="category-modal-name">golf</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-heart-pulse"></i></span>
<span class="category-modal-name">health</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-graduation-cap"></i></span>
<span class="category-modal-name">higher education</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-trophy"></i></span>
<span class="category-modal-name">hockey</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-house"></i></span>
<span class="category-modal-name">home</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-shield-halved"></i></span>
<span class="category-modal-name">internet security</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-briefcase"></i></span>
<span class="category-modal-name">jobs</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-stethoscope"></i></span>
<span class="category-modal-name">medicine</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-brain"></i></span>
<span class="category-modal-name">mental health</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-mobile-screen-button"></i></span>
<span class="category-modal-name">mobile</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-flag-checkered"></i></span>
<span class="category-modal-name">motor sports</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-film"></i></span>
<span class="category-modal-name">movies</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-music"></i></span>
<span class="category-modal-name">music</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-brain"></i></span>
<span class="category-modal-name">neuroscience</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-apple-whole"></i></span>
<span class="category-modal-name">nutrition</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-laptop"></i></span>
<span class="category-modal-name">online education</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-campground"></i></span>
<span class="category-modal-name">outdoors</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-bone"></i></span>
<span class="category-modal-name">paleontology</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-wallet"></i></span>
<span class="category-modal-name">personal finance</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-atom"></i></span>
<span class="category-modal-name">physics</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-landmark"></i></span>
<span class="category-modal-name">politics</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-heart-pulse"></i></span>
<span class="category-modal-name">public health</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-robot"></i></span>
<span class="category-modal-name">robotics</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-football-rugby"></i></span>
<span class="category-modal-name">rugby</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-flask"></i></span>
<span class="category-modal-name">science</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-cart-shopping"></i></span>
<span class="category-modal-name">shopping</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-futbol"></i></span>
<span class="category-modal-name">soccer</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-users"></i></span>
<span class="category-modal-name">social sciences</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-rocket"></i></span>
<span class="category-modal-name">space</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-trophy"></i></span>
<span class="category-modal-name">sports</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-dice"></i></span>
<span class="category-modal-name">sports betting</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-microchip"></i></span>
<span class="category-modal-name">technology</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-table-tennis-paddle-ball"></i></span>
<span class="category-modal-name">tennis</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-masks-theater"></i></span>
<span class="category-modal-name">theater</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-plane"></i></span>
<span class="category-modal-name">travel</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-tv"></i></span>
<span class="category-modal-name">tv</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-car"></i></span>
<span class="category-modal-name">vehicles</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-vr-cardboard"></i></span>
<span class="category-modal-name">virtual reality</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-person-swimming"></i></span>
<span class="category-modal-name">water sports</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-paw"></i></span>
<span class="category-modal-name">wildlife</span>
</div>
<div class="category-modal-item">
<span class="category-modal-icon"><i class="fa-solid fa-globe"></i></span>
<span class="category-modal-name">world</span>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/jsvectormap"></script>
<script src="https://cdn.jsdelivr.net/npm/jsvectormap/dist/maps/world.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="/js/main.js"></script>
<script>
const rawCountryMap = {"AE":["ar"],"AR":["es-419"],"AT":["de"],"AU":["en"],"BD":["bn"],"BE":["fr","nl"],"BG":["bg"],"BR":["pt-419"],"BW":["en"],"CA":["en","fr"],"CH":["de","fr"],"CL":["es-419"],"CN":["zh"],"CO":["es-419"],"CU":["es-419"],"CZ":["cs"],"DE":["de"],"DK":["da"],"EE":["et"],"EG":["ar"],"ES":["ca","es"],"ET":["en"],"FI":["fi"],"FR":["fr"],"GB":["en"],"GH":["en"],"GR":["el"],"HU":["hu"],"ID":["en","id"],"IE":["en"],"IL":["en"],"IN":["bn","en","gu","hi","ml","mr","pa","ta","te"],"IT":["it"],"JP":["ja"],"KE":["en"],"KR":["ko"],"LB":["ar"],"LT":["lt"],"LV":["en","lv"],"MA":["fr"],"MX":["es-419"],"MY":["en","ms"],"NA":["en"],"NG":["en"],"NL":["nl"],"NO":["no"],"NZ":["en"],"PE":["es-419"],"PH":["en"],"PK":["en"],"PL":["pl"],"PT":["pt-150"],"RO":["ro"],"RS":["sr"],"RU":["ru"],"SA":["ar"],"SE":["sv"],"SG":["en"],"SI":["sl"],"SK":["sk"],"SN":["fr"],"TH":["th"],"TR":["tr"],"TZ":["en"],"UA":["ru","uk"],"UG":["en"],"US":["en","es-419"],"VE":["es-419"],"VN":["vi"],"ZA":["en"],"ZW":["en"]};
const dailyArticlesLabels = ["Oct 23","Oct 24","Oct 25","Oct 26","Oct 27","Oct 28","Oct 29"];
const dailyArticlesValues = [131040,92959,91531,132935,133297,128695,121160];
const countryMap = {};
const regionValues = {};
Object.keys(rawCountryMap).forEach(code => {
const upperCode = String(code).toUpperCase();
const languages = Array.isArray(rawCountryMap[code]) ? rawCountryMap[code] : [];
countryMap[upperCode] = languages;
regionValues[upperCode] = 1;
});
const regionNames = new Intl.DisplayNames(['en'], { type: 'region' });
new jsVectorMap({
selector: "#worldCoverageMap",
map: "world",
zoomButtons: true,
regionStyle: {
initial: {
fill: "#dbe4f0",
stroke: "#ffffff",
strokeWidth: 1
},
hover: {
fill: "#94a3b8"
}
},
series: {
regions: [{
attribute: "fill",
values: regionValues,
scale: {
1: "#2563eb"
}
}]
},
onRegionClick: function(event) {
event.preventDefault();
},
onRegionTooltipShow: function(event, tooltip, code) {
const upperCode = String(code).toUpperCase();
const languages = countryMap[upperCode] || [];
const countryName = regionNames.of(upperCode) || upperCode;
if (languages.length) {
const html =
"<strong>" + countryName + "</strong><br>" +
"Languages: " + languages.map(l => String(l).toUpperCase()).join(", ");
tooltip.text(html, true);
} else {
tooltip.text("<strong>" + countryName + "</strong><br>No current coverage", true);
}
}
});
const chartCanvas = document.getElementById('articlesPerDayChart');
if (chartCanvas && dailyArticlesLabels.length && dailyArticlesValues.length) {
new Chart(chartCanvas, {
type: 'bar',
data: {
labels: dailyArticlesLabels,
datasets: [{
label: 'Articles',
data: dailyArticlesValues,
borderWidth: 0,
borderRadius: 8,
maxBarThickness: 40
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
display: false
},
tooltip: {
displayColors: false
}
},
scales: {
x: {
grid: {
display: false
},
ticks: {
color: '#5f6c87'
}
},
y: {
beginAtZero: true,
ticks: {
color: '#5f6c87'
},
grid: {
color: 'rgba(95,108,135,0.12)'
}
}
}
}
});
}
document.querySelectorAll('.js-copy-response').forEach((button) => {
const originalHtml = button.innerHTML;
button.addEventListener('click', async () => {
const targetId = button.getAttribute('data-copy-target');
const target = document.getElementById(targetId);
if (!target) return;
try {
await navigator.clipboard.writeText(target.innerText);
button.innerHTML = '<i class="bi bi-check2 me-2"></i>Copied';
} catch (e) {
button.innerHTML = '<i class="bi bi-x-lg me-2"></i>Copy failed';
}
setTimeout(() => {
button.innerHTML = originalHtml;
}, 1500);
});
});
</script>
</body>
</html>