Count articles by field values and ranges

Count articles by field values and by ranges in the same analysis

Input parameters

ParameterDescriptionTypeDefaultRequired
titleSearch query.stringYes
facetCount articles by field value.booleantrueYes
facet.fieldFields to use for counts by value.stringYes
facet.rangeCount articles by range.booleantrueYes
facet.range.fieldField to use for counts by range.stringYes
facet.range.startStart value for range.stringYes
facet.range.endEnd value for range.stringYes
facet.range.gapGap between ranges (e.g., 1MONTH).stringYes
api_keyYour API keystringYes
per_pageMaximum number of articles to retrieveinteger20No

Workflow examples

Count articles by field values and ranges:
curl -X GET "https://api.apitube.io/v1/news/everything?title=climate&facet=true&facet.field=source.country.id,language.id&facet.range=true&facet.range.field=published_at&facet.range.start=2024-01-01&facet.range.end=2024-06-01&facet.range.gap=1MONTH&api_key=YOUR_API_KEY"
Show coverage tone over time:
curl -X GET "https://api.apitube.io/v1/news/everything?brand.name=Coca-Cola&facet.range=true&facet.range.field=published_at&facet.range.start=2024-01-01&facet.range.end=2024-12-31&facet.range.gap=1MONTH&sentiment.overall.polarity=positive&api_key=YOUR_API_KEY"
Track how many images and videos appear in articles over time:
curl -X GET "https://api.apitube.io/v1/news/everything?has_image=1&facet.range=true&facet.range.field=media.images.count&facet.range.start=1&facet.range.end=20&facet.range.gap=2&api_key=YOUR_API_KEY"

Related examples

Recipe for cURL

curl --location --globoff --request POST 'https://api.apitube.io/v1/news/everything?title=climate&facet=1&facet.field=source.country.id%2Clanguage.id&facet.range=1&facet.range.field=published_at&facet.range.start=2024-01-01&facet.range.end=2024-06-01&facet.range.gap=1MONTH&api_key=YOUR_API_KEY&per_page=20' \
--header 'Content-Type: application/json'

Recipe for Python

import requests

url = "https://api.apitube.io/v1/news/everything"

querystring = {
    "title": "climate",
    "facet": true,
    "facet.field": "source.country.id,language.id",
    "facet.range": true,
    "facet.range.field": "published_at",
    "facet.range.start": "2024-01-01",
    "facet.range.end": "2024-06-01",
    "facet.range.gap": "1MONTH",
    "api_key": "YOUR_API_KEY",
    "per_page": 20
}
response = requests.request("GET", url, params=querystring)

print(response.text)

Recipe for Javascript

import axios from "axios"

const options = {
		method: 'GET',
		url: 'https://api.apitube.io/v1/news/everything',
		params: {
    "title": "climate",
    "facet": true,
    "facet.field": "source.country.id,language.id",
    "facet.range": true,
    "facet.range.field": "published_at",
    "facet.range.start": "2024-01-01",
    "facet.range.end": "2024-06-01",
    "facet.range.gap": "1MONTH",
    "api_key": "YOUR_API_KEY",
    "per_page": 20
}};

axios.request(options).then(function (response) {
		console.log(response.data);
}).catch(function (error) {
		console.error(error);
});

Recipe for PHP

require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client();
$response = $client->request('GET', 'https://api.apitube.io/v1/news/everything', [
	'query' => [
    'title' => 'climate',
    'facet' => 1,
    'facet.field' => 'source.country.id,language.id',
    'facet.range' => 1,
    'facet.range.field' => 'published_at',
    'facet.range.start' => '2024-01-01',
    'facet.range.end' => '2024-06-01',
    'facet.range.gap' => '1MONTH',
    'api_key' => 'YOUR_API_KEY',
    'per_page' => 20,
],
]);

echo $response->getBody();

Recipe for Java

OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
		.url("https://api.apitube.io/v1/news/everything?title=climate&facet=1&facet.field=source.country.id%2Clanguage.id&facet.range=1&facet.range.field=published_at&facet.range.start=2024-01-01&facet.range.end=2024-06-01&facet.range.gap=1MONTH&api_key=YOUR_API_KEY&per_page=20")
		.method("POST", body)
		.addHeader("Content-Type", "application/json")
		.build();
Response response = client.newCall(request).execute();
		
  • CNN
  • Techcrunch
  • Vox
  • Apple
  • Microsoft
  • IBM
  • Bloomberg
  • Spotify
We use cookies

By clicking "Accept", you agree to cookies on your device for the site to work and for analytics.