Skip to content

Suggest Sources

The /v1/suggest/sources endpoint provides autocomplete functionality for searching news sources by name or domain prefix. It is useful for building filter interfaces: the returned id can be passed directly to the source.id parameter of the news endpoints.

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.

Endpoint

GET /v1/suggest/sources

The search matches both the source name and its domain. Results are returned as an array of source objects.

Query Parameters

ParameterTypeRequiredDescription
prefixstringYesThe name or domain prefix to search for. Minimum 1 character.
api_keystringYes*Your API key. Can also be provided via headers.

* Required if not provided in headers

Response Format

The endpoint returns an array of source objects with the following structure:

json
[
  {
    "id": 0,
    "name": "string",
    "domain": "string",
    "type": "string",
    "bias": "string",
    "links": {
      "self": "string"
    }
  }
]

Response Fields

FieldTypeDescription
idintegerSource identifier. Use it directly in the source.id filter.
namestringSource name
domainstringSource domain
typestring | nullResource type (e.g. news, blog)
biasstring | nullPolitical bias of the source: left, center, or right
links.selfstringURL to get news articles from this source (/v1/news/everything?source.id=...)

Request Examples

Using query parameter

bash
curl "https://api.apitube.io/v1/suggest/sources?prefix=bbc&api_key=YOUR_API_KEY"
python
import requests

resp = requests.get(
    "https://api.apitube.io/v1/suggest/sources",
    params={"prefix": "bbc", "api_key": "YOUR_API_KEY"},
)
print(resp.json())
javascript
const params = new URLSearchParams({ prefix: "bbc", api_key: "YOUR_API_KEY" });
const resp = await fetch(`https://api.apitube.io/v1/suggest/sources?${params}`);
console.log(await resp.json());
php
$query = http_build_query(["prefix" => "bbc", "api_key" => "YOUR_API_KEY"]);
$data = json_decode(file_get_contents("https://api.apitube.io/v1/suggest/sources?$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/suggest/sources")
	q := u.Query()
	q.Set("prefix", "bbc")
	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/suggest/sources?prefix=bbc&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/suggest/sources?prefix=bbc

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/parameters

Using header authentication

shell
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.apitube.io/v1/suggest/sources?prefix=guardian"

Using Bearer token

shell
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.apitube.io/v1/suggest/sources?prefix=reuters"

Response Example

json
[
  {
    "id": 1024,
    "name": "BBC News",
    "domain": "bbc.com",
    "type": "news",
    "bias": "center",
    "links": {
      "self": "https://api.apitube.io/v1/news/everything?source.id=1024"
    }
  }
]

Error Responses

Missing or Invalid API Key

json
{
  "errors": [
    {
      "code": "ER0201",
      "message": "API key is required. Provide it via X-API-Key header or api_key query parameter."
    }
  ]
}

Status Code: 401

Missing Prefix Parameter

json
{
  "errors": [
    {
      "code": "ER0346",
      "message": "`Prefix` in query required."
    }
  ]
}

Status Code: 400