The News API Documentation offers developers a robust and easy-to-integrate solution for accessing real-time news articles and headlines from trusted sources worldwide. With support for filtering content by keyword, language, source, country, and date, the News API helps build dynamic applications enriched with up-to-date news content. The API returns data in JSON format and follows RESTful principles, making it simple to use across platforms. Whether you're creating a news aggregator, a content analysis tool, or enhancing your app with current events, the News API provides detailed documentation, authentication via API key, endpoint structure, and usage guidelines to help you get started quickly and efficiently.
Parameters | Details |
---|---|
access_key | This is a required parameter. It’s your unique access key used to authenticate and authorize your request. |
find | You needs to add some words to search news. The "find" parameter will search in news title, description and content. If words contain anywhere in news, it will return that news. Default: none. Values: trump, world war 3, Nasdaq Stocks... etc, any word, |
from (Optional) | When you access history news API and you are looking for any historical data from a specific date, you need to specify date between from/to date by using (from, to) parameter Default: none Format: YYYY-MM-DD E.g: 2025-06-28 |
to (Optional) | When you access news history API, It is required with "From" Parameter. Default: none Format: YYYY-MM-DD E.g: 2025-06-22 |
language (Optional) | You can set language parameter, so API only return all news in your specfied language. Default: none Values: ar {Arabic}, de {German}, en {English}, es {Spanish}, fr {French}, it {italian}, nl {Dutch}, pt {Portuguese}, ru {Russian} OR all {all languages} |
limit (Optional) | You can use this parameter to control how much data is returned. Default: 20 |
offset (Optional) | Offset tells the system to ignore a set number of items and fetch the data from the next one onward Default: none |
search_in (Optional) | Use this parameter to define which fields (title, content, description) should be searched. Default: none Valid Values: title, content, description |
Category (Optional) | Use this parameter to fetch data from a specific category. Default: none Values: Weather, Sports, Travel, Health, Politics, Analysis, Business, Entertainment, etc |
Country (Optional) | Use this parameter to specify the country using a valid ISO 3166-1 alpha-2 code. Default: none Values: US, US, UK, GB |
headline (Optional) | If this parameter is set to 1, only headline news will be returned. Default: none Values: 1 |
site (Optional) | Use the site parameter to filter the data by including only the specified sites. Default: none Values: abc, bbc, rt, arynews, cbc, aljazeera, coindesk, marketwatch,reuters, investing |
sitequit (Optional) | This parameter allows you to exclude data from specific sites. Simply provide the sites you don’t want to include in the results Default: none Values: bbc, cnn, rt, abc, cbc, aljazeera, japantimes |
id | This parameter allows you to fetch data for a specific item by specifying its unique ID. Default: none |
rewrite (Optional) | When this parameter is enabled, the content will be automatically rewritten by AI. Default: none Values: 1 |
format (Optional) | If you want the content in text format, send `format=text`. Default: array Values: text |
output (Optional) | If you want the content in text format, send `format=text`. Default: json Values: json, jsonp, object, xml, serialize and array |
Note: All parameters are case sensitive, Please specify parameters in lower case (small alphabets).
Maximum 100 records return per request in any language, it will count 1 credit per request. If you set "force_update=1" then it will count 2 credit. If you set "spin=1" then it will count 5 credit.
To authenticate your API requests, you need to include your API key as a parameter in each request. The API key serves as a unique identifier that grants access to the API.
Each request must include the access_key
parameter with your assigned API key.
https://news.fcsapi.com/api/news?access_key=API_KEY
If authentication is successful, the API will return the requested data. If the API key is missing or invalid, an error response will be returned. Ensure that your API key remains confidential and is not exposed publicly.
Latest:
Return all Latest news by date that contain your search terms.
Basic Search:
find=election
- Returns articles with exactly "election" (not "elections")
Wildcard:
find=tech*
- Matches "tech", "technology", "technical", etc.
Boolean Operators:
find=climate energy
- Any one or both wordsfind=+climate +policy
- Must include both termsfind=vaccine -covid
- Include "vaccine", exclude "covid"find="artificial intelligence"
- Exact phrase matchfind=car race +super
- Must have "super", with any word "car/race"find=+breaking +news -sport*
- Contain "breaking" and "news", exclude anything start with "sport"find=tech* -apple -google
- Words starting with "tech" but excluding "apple" and "google"find="climate change" +policy
- The exact phrase "climate change" with the word "policy"Notes:
*ing
) or mid-word wildcards (c*r
)https://news.fcsapi.com/api/news?find=car&access_key=API_KEYFrom Specific Date:
Return all news sort by date that contain words "trump".
https://news.fcsapi.com/api/news?find=car*&from=2025-06-28&to=2025-06-22&access_key=API_KEYFrom Language:
Return all news sort by language that contain words "trump".
https://news.fcsapi.com/api/news?find=+trump +elections&language=en&access_key=API_KEYFrom limit:
Give news in define limit.
https://news.fcsapi.com/api/news?find=trump&limit=10&access_key=API_KEYFrom offset:
skipping given number results (pagination) and showing next news.
https://news.fcsapi.com/api/news?find=trump&limit=10&offset=10&access_key=API_KEYFrom search:
Return news according to search fields.
https://news.fcsapi.com/api/news?find=trump&search_in=title,content,description&access_key=API_KEYResponse:
After you request on API, It would give you the response in JSON format which you can change, it is up to your need. Moreover, We have characterized our News API response in the form of different index keys (id, name, symbol, and decimals) concerning the different popular currencies which you can use according to your requirements.
{
"status": true,
"code": 200,
"message": "All news articles",
"response": [
{
"id": "755",
"title": "Kalgoorlie man who allegedly severed father...",
"description": "The 19-year-old's lawyer told a ...",
"image_url": "https://live-production.wcms.abc-cdn.net.au/e6db9..."
"language": "en",
"datetime": "2025-03-14 02:55:32",
"url": "https://www.abc.net.au/news/2025-03-14/kalgoorlie-samurai-sword-accused-granted-bail/105047726",
"site": "abc",
"Category": "business",
"country": "india",
"keywords": "india",
"author": "Priscilla Alvarez"
}
]
}
Return all Latest news by category.
https://news.fcsapi.com/api/news?find=trump&category=entertainment&access_key=API_KEYResponse:
After you request on API, It would give you the response in JSON format which you can change, it is up to your need. Moreover, We have characterized our News API response in the form of different index keys (id, name, symbol, and decimals) concerning the different popular currencies which you can use according to your requirements.
{
"status": true,
"code": 200,
"message": "All news articles",
"response": [
{
"id": "755",
"title": "Kalgoorlie man who allegedly severed father...",
"description": "The 19-year-old's lawyer told a ...",
"image_url": "https://live-production.wcms.abc-cdn.net.au/e6db9..."
"language": "en",
"datetime": "2025-03-14 02:55:32",
"url": "https://www.abc.net.au/news/2025-03-14/kalgoorlie-samurai-sword-accused-granted-bail/105047726",
"site": "abc",
"category": "entertainment",
"Country": "india",
"keywords": "india",
"author": "Priscilla Alvarez"
}
]
}
Return all Latest news by country.
https://news.fcsapi.com/api/news?find=trump&country=us&access_key=API_KEYResponse:
After you request on API, It would give you the response in JSON format which you can change, it is up to your need. Moreover, We have characterized our News API response in the form of different index keys (id, name, symbol, and decimals) concerning the different popular currencies which you can use according to your requirements.
{
"status": true,
"code": 200,
"message": "All news articles",
"response": [
{
"id": "755",
"title": "Kalgoorlie man who allegedly severed father...",
"description": "The 19-year-old's lawyer told a ...",
"image_url": "https://live-production.wcms.abc-cdn.net.au/e6db9..."
"language": "en",
"datetime": "2025-03-14 02:55:32",
"url": "https://www.abc.net.au/news/2025-03-14/kalgoorlie-samurai-sword-accused-granted-bail/105047726",
"site": "abc",
"category": "entertainment",
"Country": "usa",
"keywords": "usa",
"author": "Priscilla Alvarez"
}
]
}
https://news.fcsapi.com/api/news?find=trump&headline=1&access_key=API_KEYResponse:
After you request on API, It would give you the response in JSON format which you can change, it is up to your need. Moreover, We have characterized our News API response in the form of different index keys (id, name, symbol, and decimals) concerning the different popular currencies which you can use according to your requirements.
{
"status": true,
"code": 200,
"message": "All news articles",
"response": [
{
"id": "755",
"title": "Kalgoorlie man who allegedly severed father...",
"description": "The 19-year-old's lawyer told a ...",
"image_url": "https://live-production.wcms.abc-cdn.net.au/e6db9..."
"language": "en",
"datetime": "2025-03-14 02:55:32",
"url": "https://www.abc.net.au/news/2025-03-14/kalgoorlie-samurai-sword-accused-granted-bail/105047726",
"site": "abc",
"category": "entertainment",
"Country": "usa",
"keywords": "usa",
"author": "Priscilla Alvarez"
}
]
}
Return all news of specific site.
https://news.fcsapi.com/api/news?find=Trump&site=abc&access_key=API_KEYFor Multiple Site:
Return all news sort by multiple sites that contain words "trump".
https://news.fcsapi.com/api/news?find=Trump&site=abc,japantimes&access_key=API_KEYFor SiteQuit:
Remove all news of that sites sort by sitequit.
https://news.fcsapi.com/api/news?find=trump&sitequit=rt,aljazeera&access_key=API_KEYResponse:
After you request on API, It would give you the response in JSON format which you can change, it is up to your need. Moreover, We have characterized our News API response in the form of different index keys (id, name, symbol, and decimals) concerning the different popular currencies which you can use according to your requirements.
{
"status": true,
"code": 200,
"message": "All news articles",
"response": [
{
"id": "755",
"title": "Kalgoorlie man who allegedly severed father...",
"description": "The 19-year-old's lawyer told a ...",
"image_url": "https://live-production.wcms.abc-cdn.net.au/e6db9..."
"language": "en",
"datetime": "2025-03-14 02:55:32",
"url": "https://www.abc.net.au/news/2025-03-14/kalgoorlie-samurai-sword-accused-granted-bail/105047726",
"site": "abc",
"category": "entertainment",
"Country": "usa",
"keywords": "usa",
"author": "Priscilla Alvarez"
}
]
}
Orignal content
https://news.fcsapi.com/api/news/content?id=10&access_key=API_KEY
Rewrite content
If you set "rewrite=1" then it will count 10 credit.
https://news.fcsapi.com/api/news/content?id=10&rewrite=1&access_key=API_KEY
Format content
If you want the content in text format, send `format=text`.
https://news.fcsapi.com/api/news/content?id=10&format=text&access_key=API_KEYResponse:
After you request on API, It would give you the response in JSON format which you can change, it is up to your need. Moreover, We have characterized our News API response in the form of different index keys (id, name, symbol, and decimals) concerning the different popular currencies which you can use according to your requirements.
{
"status": true,
"code": 200,
"message": "All news articles",
"response": {
"id": "755",
"title": "Kalgoorlie man who allegedly severed father...",
"description": "The 19-year-old's lawyer told a ...",
"content": "{\n \"p_1\": \"San Juan, Puerto Rico (AP) \\u2014 An island-w...}",
"image_url": "https://live-production.wcms.abc-cdn.net.au/e6db9..."
"language": "en",
"datetime": "2025-03-14 02:55:32",
"url": "https://www.abc.net.au/news/2025-03-14/kalgoorlie-samurai-sword-accused-granted-bail/105047726",
"site": "abc",
"category": "entertainment",
"Country": "usa",
"keywords": "usa",
"author": "Priscilla Alvarez"
}
}
There are multiple errors that help you to understand issue with your API response.
Code | Details |
---|---|
200 | Your API is working. Response successfully |
101 | API Key error : Your access key is wrong, Please login in your dashboard and get your API KEY. |
102 | Your Account is not activated. |
103 | Your Account is blocked. |
104 | API Key error : You have not set your access_key in parameters. |
112 | Data not found, it may be you set wrong values and it may be no data from our side. More error details will be send in API response. |
113 | Required parameters are missing, Please check api documentaion also check message in API response for more error details. |
211 | You have used your all monthly API request limit. |
212 | Your Account is expired, You need to pay your montly fee or downgrade to free version. |
213 | Error 213 is only for Free user, free user are not allow more than 1 request per minute.. |
Use a client library (SDK) to quickly and easily get started with News API without having to make HTTP requests directly.
We have libraries available for the following languages:
These libraries handle API requests, authentication, and response parsing, making integration easier for developers.
CURL *curl;
CURLcode res;
// The URL to which we will send the POST request
const char *url = "https://news.fcsapi.com/api/news";
// Create form data with parameters
const char *postfields = "find=trump&access_key=API_KEY";
// Initialize libcurl
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl){
// Set the URL for the POST request
curl_easy_setopt(curl, CURLOPT_URL, url);
// Specify that this is a POST request
curl_easy_setopt(curl, CURLOPT_POST, 1L);
// Set the POST fields
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postfields);
// Perform the request, res will get the return code
res = curl_easy_perform(curl);
// Check for errors
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
// Always cleanup
curl_easy_cleanup(curl);
}
// Global cleanup
curl_global_cleanup();
return 0;
// Initialize the client with the base URL
var client = new RestClient("https://news.fcsapi.com/api/news");
// Create a POST request
var request = new RestRequest(Method.POST);
// Create form data with parameters
request.AddParameter("find", "trump");
request.AddParameter("access_key", "API_KEY");
// Execute the request and get the response
IRestResponse response = client.Execute(request);
// Print the response
Console.WriteLine(response.Content);
# Use curl to make a POST request to the specified URL
curl -X POST https://news.fcsapi.com/api/news \
# Create form data with parameters
-d "find=trump" \
-d "access_key=API_KEY"
package main
import (
"bytes"
"fmt"
"net/http"
"net/url"
)
func main() {
apiUrl := "https://news.fcsapi.com/api/news"
// Create form data with parameters
data := url.Values{}
data.Set("find", "trump")
data.Set("access_key", "API_KEY")
// Create a new POST request
req, err := http.NewRequest("POST", apiUrl, bytes.NewBufferString(data.Encode()))
if err != nil {
fmt.Println("Error creating request:", err)
return
}
// Set content type header
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
// Perform the request
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error making request:", err)
return
}
defer resp.Body.Close()
// Print response status
fmt.Println("Response status:", resp.Status)
}
OkHttpClient client = new OkHttpClient();
// Create form data with parameters
RequestBody requestBody = new FormBody.Builder();
.add("find", "trump")
.add("access_key", "API_KEY")
.build()
// Create the request
Request request = new Request.Builder();
.url("https://news.fcsapi.com/api/news")
.post(requestBody)
.build()
// Execute the request and get the response
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
throw new IOException("Unexpected code " + response);
}
// Print the response body
System.out.println(response.body().string());
}
// Make a POST request using Unirest
HttpResponse<String> response = Unirest.post("https://news.fcsapi.com/api/news")
// Set the Content-Type header
.header("Content-Type", "application/x-www-form-urlencoded")
// Create form data with parameters
.field("find", "trump")
.field("access_key", "API_KEY")
// Execute the request and get the response
.asString();
// Print the response body
System.out.println(response.getBody());
// Create an instance of AsyncHttpClient
AsyncHttpClient asyncHttpClient = Dsl.asyncHttpClient();
// Build the POST request
Request Request = Dsl.post("https://news.fcsapi.com/api/news");
// Create form data with parameters
.addFormParam("find", "trump")
.addFormParam("access_key", "API_KEY")
.build();
// Execute the request asynchronously
asyncHttpClient.executeRequest(request)
.toCompletableFuture();
.thenAccept(response -> {
// Print the response status code
System.out.println("Response status code: " + response.getStatusCode());
// Print the response body
System.out.println("Response body: " + response.getResponseBody());
})
.join();
// Close the AsyncHttpClient instance
asyncHttpClient.close();
// Create form data with parameters
const formData = new FormData();
formData.append("find", "trump");
formData.append("access_key", "API_KEY");
// Send a POST request to the API
fetch("https://news.fcsapi.com/api/news", {
method: "POST",
headers: {
// Set content type to form-urlencoded
"Content-Type": "application/x-www-form-urlencoded"
},
body: formData
})
// Parse the JSON response
.then(response => response.json())
// Log the data to the console
.then(data => console.log(data))
// Log any errors to the console
.catch(error => console.error("Error:", error))
Real-time rates: Find below a simple jQuery.ajax example of getting exchange rate data via the News API's latest endpoint.
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script>
access_key = "API_KEY"; // Your API access key, Signup to get API KEY
find = 'trump';
$.ajax({
url: "https://news.fcsapi.com/api/news?find=" + find + "&access_key=" + access_key,
type: "GET", // GET or POST
dataType: "json",
success: function(data) {
console.log("Price of "+data.response[0].symbol + " is "+data.response[0].price);
}
});
</script>
// Create form data with parameters
var formData = new FormData();
formData.append("find", "trump");
formData.append("access_key", "API_KEY");
// Create a new XMLHttpRequest object
var xhr = new XMLHttpRequest();
// Configure the request
xhr.open("POST", "https://news.fcsapi.com/api/news", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Set up a function to handle the response
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
// Request was successful, handle the response here
console.log(xhr.responseText);
}
};
// Send the request with the parameters
xhr.send(formData);
// Require the 'request' library
const request = require('request');
// Define the request options
const options = {
url: "https://news.fcsapi.com/api/news",
method: "POST",
// Create form data with parameters
form: {
find: 'trump',
access_key: 'API_KEY',
}
};
// Make the HTTP request
request(options, function (error, response, body) {
if (error) {
console.error('Error:', error);
}
else {
console.log('Response:', body);
}
});
// Require the 'unirest' library
const unirest = require('unirest');
// Make a POST request to the specified URL
unirest.post("https://news.fcsapi.com/api/news")
.headers({'Content-Type': 'application/json'})
// Create form data with parameters
.field('find', "trump")
.field('access_key', "API_KEY")
.end(function (response) {
console.log(response.body);
});
// Require the 'axios' library
const axios = require('axios');
// Create form data with parameters
const data = {
find: 'trump',
access_key: 'API_KEY'
};
// Making a POST request using Axios
axios.post("https://news.fcsapi.com/api/news", data)
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error("error", error);
});
$access_key = "API_KEY"; // Your API access key, Signup to get API KEY
$find = "trump";
// Enter your API URL below
$api_url = "https://news.fcsapi.com/api/news";
$post = "find=".trump."&access_key=".$access_key;
// Initialize CURL:
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$json = curl_exec($ch); // Store the data
curl_close($ch);
$response = json_decode($json, true); // convert JSON into Array
foreach ($response['response'] as $key => $value) {
echo "<br>Open Price Of ".$value['find']." is ".$value['price'];
}
// Create form data with parameters
$data = array(
'find' => 'trump',
'access_key' => 'API_KEY',
);
Set POST data
$data_query = http_build_query($data);
// Initialize a new HTTP request
$request = new HttpRequest("https://news.fcsapi.com/api/news", HttpRequest::METH_POST);
$request->addHeaders(array(
'Content-Type' => 'application/x-www-form-urlencoded',
});
$request->setBody($data_query);
// Send the request and capture the response
try {
$response = $request->send();
// Display the response
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
import requests
# Create form data with parameters
params = {
"find": "trump",
"access_key": "API_KEY"
}
# Make the POST request
response = requests.post("https://news.fcsapi.com/api/news", data=params)
# Print the response
print(response.text)
require 'uri'
require 'net/http'
url = URI("https://news.fcsapi.com/api/news")
# Create form data with parameters
params = {
"find": "trump",
"access_key": "API_KEY"
}
# Create the HTTP object
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
# Create the request
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/x-www-form-urlencoded"
request.set_form_data(params)
# Send the request
response = http.request(request)
# Output the response
puts "Response code: #{response.code}"
puts "Response body: #{response.body}"
http --ignore-stdin --form --follow --timeout 3600 POST 'https://news.fcsapi.com/api/news' \
# Create form data with parameters
"find"="trump" \
"access_key"="API_KEY"