Skip to content

Raw Articles

The /v1/news/raw endpoint returns articles as they are discovered, before HTML parsing and NLP enrichment. Use it when you want the earliest possible access to incoming articles, or when you plan to run your own parsing and analysis.

Because this is the discovery stage, enrichment fields are not available: there is no language detection, no categories, topics, entities, industries, or sentiment. Each article carries only what the source feed provided (title, link, raw body, author, categories) plus resolved source (publisher) details.

To use the API, you'll require an API key. You can obtain an API key by signing up for an account on the APITube website.

Only the last ~24 hours are available

This is a fast-churning staging feed. Rows are continuously consumed by the pipeline and expire within ~1 day, so only articles discovered in roughly the last 24 hours are retrievable here. For the full historical archive use /v1/news/everything.

Endpoint

GET  /v1/news/raw
POST /v1/news/raw

Both methods are equivalent: filters can be passed as query parameters (GET) or as a JSON body (POST).

Query Parameters

This endpoint supports a small, fixed set of parameters — not the general filter set:

Prompt

Plain-language description of what you want; translated into the filters below.

ParameterTypeRequiredDescription
promptstringNoPlain-language description of the news you want. Only PARTIALLY applied here: this endpoint understands published_at.start, published_at.end, sort.order and per_page, so anything else the prompt produced is reported in meta.prompt.ignored with reason unsupported_on_endpoint. The 2-point translation fee still applies on a cache miss. Available on Basic and above — Free and Starter get 403 ER0706. Range: 3–500 characters.

Request for Articles Described in Plain Language

This request asks for recent English-language coverage of Tesla and Elon Musk without naming a single filter.

bash
curl "https://api.apitube.io/v1/news/raw?prompt=Tesla%20and%20Elon%20Musk%20news%20in%20English%20for%20the%20last%2010%20days&api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/news/raw",
    params={
        "prompt": "Tesla%20and%20Elon%20Musk%20news%20in%20English%20for%20the%20last%2010%20days",
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "prompt": "Tesla%20and%20Elon%20Musk%20news%20in%20English%20for%20the%20last%2010%20days", "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/news/raw?${params}`);
const data = await response.json();
console.log(data);
php
$query = http_build_query(["prompt" => "Tesla%20and%20Elon%20Musk%20news%20in%20English%20for%20the%20last%2010%20days", "api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/news/raw?$query");
$data = json_decode($response, true);
print_r($data);
go
package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	u, _ := url.Parse("https://api.apitube.io/v1/news/raw")
	q := u.Query()
	q.Set("prompt", "Tesla%20and%20Elon%20Musk%20news%20in%20English%20for%20the%20last%2010%20days")
	q.Set("api_key", "YOUR_API_KEY")
	u.RawQuery = q.Encode()

	resp, _ := http.Get(u.String())
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var data map[string]any
	json.Unmarshal(body, &data)
	fmt.Println(data)
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.apitube.io/v1/news/raw?prompt=Tesla%20and%20Elon%20Musk%20news%20in%20English%20for%20the%20last%2010%20days&api_key=YOUR_API_KEY"))
            .GET()
            .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/news/raw?prompt=Tesla%20and%20Elon%20Musk%20news%20in%20English%20for%20the%20last%2010%20days

Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/raw

Date and time

ParameterTypeRequiredDescription
published_atstringNoSingle day filter (creates a 24h range). ISO 8601 / YYYY-MM-DD / relative. Example: 2026-05-27.
published_at.endstringNoEnd of the publication date range. Example: 2026-05-27.
published_at.startstringNoStart of the publication date range. Example: 2026-05-26.

Request to get news articles within a specific date range

bash
curl "https://api.apitube.io/v1/news/raw?published_at.start=2022-01-01&published_at.end=2022-01-31&api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/news/raw",
    params={
        "published_at.start": "2022-01-01",
        "published_at.end": "2022-01-31",
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "published_at.start": "2022-01-01", "published_at.end": "2022-01-31", "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/news/raw?${params}`);
const data = await response.json();
console.log(data);
php
$query = http_build_query(["published_at.start" => "2022-01-01", "published_at.end" => "2022-01-31", "api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/news/raw?$query");
$data = json_decode($response, true);
print_r($data);
go
package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	u, _ := url.Parse("https://api.apitube.io/v1/news/raw")
	q := u.Query()
	q.Set("published_at.start", "2022-01-01")
	q.Set("published_at.end", "2022-01-31")
	q.Set("api_key", "YOUR_API_KEY")
	u.RawQuery = q.Encode()

	resp, _ := http.Get(u.String())
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var data map[string]any
	json.Unmarshal(body, &data)
	fmt.Println(data)
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.apitube.io/v1/news/raw?published_at.start=2022-01-01&published_at.end=2022-01-31&api_key=YOUR_API_KEY"))
            .GET()
            .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/news/raw?published_at.start=2022-01-01&published_at.end=2022-01-31

Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/raw

Request to get news using a relative time range

bash
curl "https://api.apitube.io/v1/news/raw?published_at.start=NOW-7DAYS&published_at.end=NOW&api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/news/raw",
    params={
        "published_at.start": "NOW-7DAYS",
        "published_at.end": "NOW",
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "published_at.start": "NOW-7DAYS", "published_at.end": "NOW", "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/news/raw?${params}`);
const data = await response.json();
console.log(data);
php
$query = http_build_query(["published_at.start" => "NOW-7DAYS", "published_at.end" => "NOW", "api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/news/raw?$query");
$data = json_decode($response, true);
print_r($data);
go
package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	u, _ := url.Parse("https://api.apitube.io/v1/news/raw")
	q := u.Query()
	q.Set("published_at.start", "NOW-7DAYS")
	q.Set("published_at.end", "NOW")
	q.Set("api_key", "YOUR_API_KEY")
	u.RawQuery = q.Encode()

	resp, _ := http.Get(u.String())
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var data map[string]any
	json.Unmarshal(body, &data)
	fmt.Println(data)
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.apitube.io/v1/news/raw?published_at.start=NOW-7DAYS&published_at.end=NOW&api_key=YOUR_API_KEY"))
            .GET()
            .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/news/raw?published_at.start=NOW-7DAYS&published_at.end=NOW

Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/raw

Source

ParameterTypeRequiredDescription
ignore.source.idstringNoComma-separated source IDs to exclude (max 3). Example: 789.
source.idstringNoComma-separated source (sitemap) IDs (max 3). Example: 123.

Sorting

ParameterTypeRequiredDescription
sort.bystringNoSort field (default id). One of: id, published_at, created_at. Example: id.
sort.orderstringNoSort direction (default desc). One of: asc, desc. Example: desc.

Request to get news articles sorted by the published date in ascending order

bash
curl "https://api.apitube.io/v1/news/raw?sort.by=published_at&sort.order=asc&api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/news/raw",
    params={
        "sort.by": "published_at",
        "sort.order": "asc",
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "sort.by": "published_at", "sort.order": "asc", "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/news/raw?${params}`);
const data = await response.json();
console.log(data);
php
$query = http_build_query(["sort.by" => "published_at", "sort.order" => "asc", "api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/news/raw?$query");
$data = json_decode($response, true);
print_r($data);
go
package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	u, _ := url.Parse("https://api.apitube.io/v1/news/raw")
	q := u.Query()
	q.Set("sort.by", "published_at")
	q.Set("sort.order", "asc")
	q.Set("api_key", "YOUR_API_KEY")
	u.RawQuery = q.Encode()

	resp, _ := http.Get(u.String())
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var data map[string]any
	json.Unmarshal(body, &data)
	fmt.Println(data)
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.apitube.io/v1/news/raw?sort.by=published_at&sort.order=asc&api_key=YOUR_API_KEY"))
            .GET()
            .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/news/raw?sort.by=published_at&sort.order=asc

Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/raw

Request to get news articles sorted by the overall sentiment magnitude in descending order

bash
curl "https://api.apitube.io/v1/news/raw?sort.by=sentiment.overall.score&sort.order=desc&api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/news/raw",
    params={
        "sort.by": "sentiment.overall.score",
        "sort.order": "desc",
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "sort.by": "sentiment.overall.score", "sort.order": "desc", "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/news/raw?${params}`);
const data = await response.json();
console.log(data);
php
$query = http_build_query(["sort.by" => "sentiment.overall.score", "sort.order" => "desc", "api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/news/raw?$query");
$data = json_decode($response, true);
print_r($data);
go
package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	u, _ := url.Parse("https://api.apitube.io/v1/news/raw")
	q := u.Query()
	q.Set("sort.by", "sentiment.overall.score")
	q.Set("sort.order", "desc")
	q.Set("api_key", "YOUR_API_KEY")
	u.RawQuery = q.Encode()

	resp, _ := http.Get(u.String())
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var data map[string]any
	json.Unmarshal(body, &data)
	fmt.Println(data)
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.apitube.io/v1/news/raw?sort.by=sentiment.overall.score&sort.order=desc&api_key=YOUR_API_KEY"))
            .GET()
            .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/news/raw?sort.by=sentiment.overall.score&sort.order=desc

Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/raw

Request to get the most viral/engaging articles

bash
curl "https://api.apitube.io/v1/news/raw?sort.by=engagement&sort.order=desc&api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/news/raw",
    params={
        "sort.by": "engagement",
        "sort.order": "desc",
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "sort.by": "engagement", "sort.order": "desc", "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/news/raw?${params}`);
const data = await response.json();
console.log(data);
php
$query = http_build_query(["sort.by" => "engagement", "sort.order" => "desc", "api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/news/raw?$query");
$data = json_decode($response, true);
print_r($data);
go
package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	u, _ := url.Parse("https://api.apitube.io/v1/news/raw")
	q := u.Query()
	q.Set("sort.by", "engagement")
	q.Set("sort.order", "desc")
	q.Set("api_key", "YOUR_API_KEY")
	u.RawQuery = q.Encode()

	resp, _ := http.Get(u.String())
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var data map[string]any
	json.Unmarshal(body, &data)
	fmt.Println(data)
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.apitube.io/v1/news/raw?sort.by=engagement&sort.order=desc&api_key=YOUR_API_KEY"))
            .GET()
            .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/news/raw?sort.by=engagement&sort.order=desc

Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/raw

Request to get the most media-rich articles

bash
curl "https://api.apitube.io/v1/news/raw?sort.by=media_richness&sort.order=desc&api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/news/raw",
    params={
        "sort.by": "media_richness",
        "sort.order": "desc",
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "sort.by": "media_richness", "sort.order": "desc", "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/news/raw?${params}`);
const data = await response.json();
console.log(data);
php
$query = http_build_query(["sort.by" => "media_richness", "sort.order" => "desc", "api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/news/raw?$query");
$data = json_decode($response, true);
print_r($data);
go
package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	u, _ := url.Parse("https://api.apitube.io/v1/news/raw")
	q := u.Query()
	q.Set("sort.by", "media_richness")
	q.Set("sort.order", "desc")
	q.Set("api_key", "YOUR_API_KEY")
	u.RawQuery = q.Encode()

	resp, _ := http.Get(u.String())
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var data map[string]any
	json.Unmarshal(body, &data)
	fmt.Println(data)
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.apitube.io/v1/news/raw?sort.by=media_richness&sort.order=desc&api_key=YOUR_API_KEY"))
            .GET()
            .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/news/raw?sort.by=media_richness&sort.order=desc

Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/raw

Most Trustworthy News Sources

bash
curl "https://api.apitube.io/v1/news/raw?sort.by=trust&sort.order=desc&published_at.start=2024-01-01&api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/news/raw",
    params={
        "sort.by": "trust",
        "sort.order": "desc",
        "published_at.start": "2024-01-01",
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "sort.by": "trust", "sort.order": "desc", "published_at.start": "2024-01-01", "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/news/raw?${params}`);
const data = await response.json();
console.log(data);
php
$query = http_build_query(["sort.by" => "trust", "sort.order" => "desc", "published_at.start" => "2024-01-01", "api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/news/raw?$query");
$data = json_decode($response, true);
print_r($data);
go
package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	u, _ := url.Parse("https://api.apitube.io/v1/news/raw")
	q := u.Query()
	q.Set("sort.by", "trust")
	q.Set("sort.order", "desc")
	q.Set("published_at.start", "2024-01-01")
	q.Set("api_key", "YOUR_API_KEY")
	u.RawQuery = q.Encode()

	resp, _ := http.Get(u.String())
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var data map[string]any
	json.Unmarshal(body, &data)
	fmt.Println(data)
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.apitube.io/v1/news/raw?sort.by=trust&sort.order=desc&published_at.start=2024-01-01&api_key=YOUR_API_KEY"))
            .GET()
            .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/news/raw?sort.by=trust&sort.order=desc&published_at.start=2024-01-01

Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/raw

Pagination

ParameterTypeRequiredDescription
pageintegerNoPage number (default 1). Example: 1.
per_pageintegerNoResults per page (default 100, max 250; the Free plan is capped at 10 and Starter at 50). Example: 100.

Request to get news articles with pagination

bash
curl "https://api.apitube.io/v1/news/raw?per_page=10&page=1&api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/news/raw",
    params={
        "per_page": "10",
        "page": "1",
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "per_page": "10", "page": "1", "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/news/raw?${params}`);
const data = await response.json();
console.log(data);
php
$query = http_build_query(["per_page" => "10", "page" => "1", "api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/news/raw?$query");
$data = json_decode($response, true);
print_r($data);
go
package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	u, _ := url.Parse("https://api.apitube.io/v1/news/raw")
	q := u.Query()
	q.Set("per_page", "10")
	q.Set("page", "1")
	q.Set("api_key", "YOUR_API_KEY")
	u.RawQuery = q.Encode()

	resp, _ := http.Get(u.String())
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var data map[string]any
	json.Unmarshal(body, &data)
	fmt.Println(data)
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.apitube.io/v1/news/raw?per_page=10&page=1&api_key=YOUR_API_KEY"))
            .GET()
            .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/news/raw?per_page=10&page=1

Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/raw

prompt is only partially applied. This endpoint accepts prompt on Basic and above (Free and Starter get 403 ER0706), but it can only use published_at.start, published_at.end, sort.order and per_page out of it. Anything else the prompt produced — entities, categories, a headline search — is reported in meta.prompt.ignored with reason: unsupported_on_endpoint rather than silently pretending to filter. The 2-point translation fee still applies on a cache miss, so on this endpoint a hand-written date range is usually the better deal.

No enrichment filters. Filters that rely on enriched data — title, language.code, category.*, topic.*, entity.*, industry.*, sentiment.*, media filters, and similar — are not supported here, because that data does not exist yet at the discovery stage. Use /v1/news/everything for enriched search.

Each request costs 1 point (charged only when the response contains at least one article).

Response Format

json
{
  "status": "ok",
  "limit": 100,
  "path": "https://api.apitube.io/v1/news/raw?page=1&per_page=100",
  "page": 1,
  "has_next_pages": true,
  "next_page": "https://api.apitube.io/v1/news/raw?page=2&per_page=100",
  "has_previous_page": false,
  "previous_page": "",
  "request_id": "string",
  "results": [
    {
      "id": 0,
      "title": "string",
      "href": "string",
      "created_at": "string",
      "description": "string",
      "body": "string",
      "body_html": "string",
      "author": "string",
      "keywords": ["string"],
      "source": {
        "id": 0,
        "domain": "string",
        "home_page_url": "string",
        "type": "string",
        "bias": "string",
        "rankings": { "opr": 0 },
        "location": { "country_name": "string", "country_code": "string" },
        "favicon": "string"
      }
    }
  ]
}

Unlike /v1/news/everything, the raw response has no export block — bulk export formats are not available for this endpoint.

Response Fields

FieldTypeDescription
statusstringAlways ok on success.
limitintegerNumber of results per page.
pageintegerCurrent page number.
has_next_pagesbooleanWhether more pages exist.
next_pagestringURL for the next page (empty if none).
has_previous_pagebooleanWhether a previous page exists.
previous_pagestringURL for the previous page (empty if none).
request_idstringUnique identifier for the request.
resultsarrayArray of raw article objects (see below).

Each item in results:

FieldTypeDescription
idintegerRaw article id.
titlestring | nullArticle title.
hrefstring | nullArticle URL.
created_atstring | nullPublication date (may be null).
descriptionstring | nullShort description.
bodystringArticle body with HTML stripped (plain text).
body_htmlstringArticle body as received from the feed (HTML preserved).
authorstring | nullAuthor.
keywordsarray | nullRaw categories/keywords.
sourceobjectPublisher details, resolved from the source (sitemap).
source.idinteger | nullSource (sitemap) id.
source.domainstringSource domain.
source.home_page_urlstringSource home page URL.
source.typestringSource resource type.
source.biasstringPolitical bias (left / center / right).
source.rankings.oprnumber | nullOpen PageRank score.
source.location.country_namestringSource country name.
source.location.country_codestringSource country ISO code.
source.faviconstringFavicon URL.

The body / body_html pair mirrors /v1/news/everything: body is the plain-text version (HTML removed and whitespace collapsed), while body_html keeps the original HTML markup.

Request Examples

GET with query filters

bash
curl "https://api.apitube.io/v1/news/raw?source.id=1024&per_page=5&api_key=YOUR_API_KEY"
python
import requests

resp = requests.get(
    "https://api.apitube.io/v1/news/raw",
    params={"source.id": 1024, "per_page": 5, "api_key": "YOUR_API_KEY"},
)
print(resp.json())
javascript
const params = new URLSearchParams({ "source.id": "1024", per_page: "5", api_key: "YOUR_API_KEY" });
const resp = await fetch(`https://api.apitube.io/v1/news/raw?${params}`);
console.log(await resp.json());
php
$query = http_build_query(["source.id" => 1024, "per_page" => 5, "api_key" => "YOUR_API_KEY"]);
$data = json_decode(file_get_contents("https://api.apitube.io/v1/news/raw?$query"), true);
print_r($data);
go
package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	u, _ := url.Parse("https://api.apitube.io/v1/news/raw")
	q := u.Query()
	q.Set("source.id", "1024")
	q.Set("per_page", "5")
	q.Set("api_key", "YOUR_API_KEY")
	u.RawQuery = q.Encode()

	resp, _ := http.Get(u.String())
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var data map[string]any
	json.Unmarshal(body, &data)
	fmt.Println(data)
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.apitube.io/v1/news/raw?source.id=1024&per_page=5&api_key=YOUR_API_KEY"))
            .GET()
            .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/news/raw?source.id=1024&per_page=5

Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/everything

POST with JSON body

bash
curl -X POST "https://api.apitube.io/v1/news/raw" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "published_at.start": "2026-05-26",
    "published_at.end": "2026-05-27",
    "sort.by": "published_at",
    "sort.order": "desc",
    "per_page": 5
  }'
python
import requests

resp = requests.post(
    "https://api.apitube.io/v1/news/raw",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "published_at.start": "2026-05-26",
        "published_at.end": "2026-05-27",
        "sort.by": "published_at",
        "sort.order": "desc",
        "per_page": 5,
    },
)
print(resp.json())
javascript
const resp = await fetch("https://api.apitube.io/v1/news/raw", {
  method: "POST",
  headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "published_at.start": "2026-05-26",
    "published_at.end": "2026-05-27",
    "sort.by": "published_at",
    "sort.order": "desc",
    per_page: 5,
  }),
});
console.log(await resp.json());
php
$ch = curl_init("https://api.apitube.io/v1/news/raw");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: YOUR_API_KEY", "Content-Type: application/json"],
    CURLOPT_POSTFIELDS => json_encode([
        "published_at.start" => "2026-05-26",
        "published_at.end" => "2026-05-27",
        "sort.by" => "published_at",
        "sort.order" => "desc",
        "per_page" => 5,
    ]),
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);
go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

func main() {
	payload, _ := json.Marshal(map[string]any{
		"published_at.start": "2026-05-26",
		"published_at.end": "2026-05-27",
		"sort.by": "published_at",
		"sort.order": "desc",
		"per_page": 5,
	})

	req, _ := http.NewRequest("POST", "https://api.apitube.io/v1/news/raw", bytes.NewBuffer(payload))
	req.Header.Set("X-API-Key", "YOUR_API_KEY")
	req.Header.Set("Content-Type", "application/json")

	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var data map[string]any
	json.Unmarshal(body, &data)
	fmt.Println(data)
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
    public static void main(String[] args) throws Exception {
        String payload = "{\"published_at.start\": \"2026-05-26\", \"published_at.end\": \"2026-05-27\", \"sort.by\": \"published_at\", \"sort.order\": \"desc\", \"per_page\": 5}";
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.apitube.io/v1/news/raw"))
            .header("X-API-Key", "YOUR_API_KEY")
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(payload))
            .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

POST https://api.apitube.io/v1/news/raw
Body (JSON):
{
    "published_at.start": "2026-05-26",
    "published_at.end": "2026-05-27",
    "sort.by": "published_at",
    "sort.order": "desc",
    "per_page": 5
  }

Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/everything

Using Bearer token

shell
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.apitube.io/v1/news/raw?source.id=1024"

Response Example

json
{
  "status": "ok",
  "limit": 2,
  "path": "https://api.apitube.io/v1/news/raw?per_page=2",
  "page": 1,
  "has_next_pages": true,
  "next_page": "https://api.apitube.io/v1/news/raw?page=2&per_page=2",
  "has_previous_page": false,
  "previous_page": "",
  "request_id": "req_def456ghi789",
  "results": [
    {
      "id": 84512377,
      "title": "AI advances reshape the chip industry in 2026",
      "href": "https://example.com/ai-advances-2026",
      "created_at": "2026-05-27 08:00:00",
      "description": "A look at how new accelerators are changing the market.",
      "body": "The field of artificial intelligence continues to move quickly...",
      "body_html": "<p>The field of artificial intelligence continues to move quickly...</p>",
      "author": "Jane Doe",
      "keywords": ["technology", "ai", "semiconductors"],
      "source": {
        "id": 1024,
        "domain": "example.com",
        "home_page_url": "https://example.com",
        "type": "news",
        "bias": "center",
        "rankings": { "opr": 6 },
        "location": { "country_name": "United States", "country_code": "us" },
        "favicon": "https://www.google.com/s2/favicons?domain=https://example.com"
      }
    },
    {
      "id": 84512376,
      "title": "Tech company announces AI partnership",
      "href": "https://news.example.org/ai-partnership",
      "created_at": "2026-05-27 07:15:00",
      "description": "Two firms join forces on model infrastructure.",
      "body": "A major technology company announced today...",
      "body_html": "<p>A major technology company announced today...</p>",
      "author": null,
      "keywords": ["business", "ai"],
      "source": {
        "id": 2048,
        "domain": "news.example.org",
        "home_page_url": "https://news.example.org",
        "type": "news",
        "bias": "left",
        "rankings": { "opr": 4 },
        "location": { "country_name": "United Kingdom", "country_code": "gb" },
        "favicon": "https://www.google.com/s2/favicons?domain=https://news.example.org"
      }
    }
  ]
}

Error Responses

Invalid or Missing API Key

json
{
  "status": "not_ok",
  "request_id": "req_abc123def456",
  "errors": [
    {
      "status": 401,
      "code": "ER0175",
      "message": "API key is invalid or missing.",
      "links": { "about": "https://docs.apitube.io/platform/news-api/http-response-codes" },
      "timestamp": "2026-05-27T14:30:00Z"
    }
  ]
}

Status Code: 401

No Points on Account

json
{
  "status": "not_ok",
  "request_id": "req_abc123def456",
  "errors": [
    {
      "status": 402,
      "code": "ER0176",
      "message": "You have no points on your account.",
      "links": { "about": "https://docs.apitube.io/platform/news-api/http-response-codes" },
      "timestamp": "2026-05-27T14:30:00Z"
    }
  ]
}

Status Code: 402

Rate Limit Exceeded

json
{
  "status": "not_ok",
  "request_id": "req_abc123def456",
  "errors": [
    {
      "status": 429,
      "code": "ER0203",
      "message": "Rate limit exceeded.",
      "links": { "about": "https://docs.apitube.io/platform/news-api/http-response-codes" },
      "timestamp": "2026-05-27T14:30:00Z"
    }
  ]
}

Status Code: 429

Invalid Parameters

Invalid parameter values return HTTP 400 with a specific error code:

CodeParameterCondition
ER0050 / ER0051 / ER0052source.idNot an integer / negative / wrong length (1–20 chars).
ER0053 / ER0054 / ER0055ignore.source.idNot an integer / negative / wrong length (1–20 chars).
ER0104 / ER0105published_at.startInvalid value / wrong length (1–30 chars).
ER0106 / ER0107published_at.endInvalid value / wrong length (1–30 chars).
ER0108 / ER0109published_atWrong length (1–30 chars) / invalid value.
ER0170 / ER0171per_pageNot an integer / greater than 250.
ER0172pageNot an integer.