Combined regular and range faceting

Use both regular faceting and range faceting together for comprehensive analytics

Input parameters

ParameterDescriptionTypeDefaultRequired
titleSearch query.stringYes
facetEnable regular faceting.booleantrueYes
facet.fieldFields for regular faceting.stringYes
facet.rangeEnable range faceting.booleantrueYes
facet.range.fieldField for range faceting.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 key.stringYes
per_pageMaximum number of articles to retrieve.integer20No

Workflow examples

Request for combined regular and range faceting:
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"
Request for sentiment timeline dashboard:
curl -X GET "https://api.apitube.io/v1/news/everything?brand.name=Nike&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"
Request for media richness timeline:
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"

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