Get an article
Fetch one article by id, including the latest enrichment.
GEThttps://api.marketnewsapi.com/v1/news/{id}
Useful when you stored an id from the stream and want the full record later, or to re-read an article after its AI summary is filled in.
Requires an API key. See authentication.
Path parameters
|
idstringrequired
Article id, e.g.
art_9f2c1d7e4b8a6035. |
Example request
curl "https://api.marketnewsapi.com/v1/news/art_9f2c1d7e4b8a6035" \
-H "Authorization: Bearer $MARKETNEWSAPI_KEY"import json
import os
import requests
resp = requests.get(
"https://api.marketnewsapi.com/v1/news/art_9f2c1d7e4b8a6035",
headers={"Authorization": f"Bearer {os.environ['MARKETNEWSAPI_KEY']}"},
timeout=10,
)
resp.raise_for_status()
print(json.dumps(resp.json(), indent=2))const res = await fetch("https://api.marketnewsapi.com/v1/news/art_9f2c1d7e4b8a6035", {
headers: { Authorization: `Bearer ${process.env.MARKETNEWSAPI_KEY}` },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(await res.json());package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.marketnewsapi.com/v1/news/art_9f2c1d7e4b8a6035", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("MARKETNEWSAPI_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}<?php
$ch = curl_init('https://api.marketnewsapi.com/v1/news/art_9f2c1d7e4b8a6035');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('MARKETNEWSAPI_KEY')],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body);require "json"
require "net/http"
uri = URI("https://api.marketnewsapi.com/v1/news/art_9f2c1d7e4b8a6035")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer #{ENV.fetch('MARKETNEWSAPI_KEY')}"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.pretty_generate(JSON.parse(res.body))using System.Net.Http.Headers;
using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
"Bearer", Environment.GetEnvironmentVariable("MARKETNEWSAPI_KEY"));
var json = await http.GetStringAsync("https://api.marketnewsapi.com/v1/news/art_9f2c1d7e4b8a6035");
Console.WriteLine(json);import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.marketnewsapi.com/v1/news/art_9f2c1d7e4b8a6035"))
.header("Authorization", "Bearer " + System.getenv("MARKETNEWSAPI_KEY"))
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
}
}Example response
200 OK
{
"data": {
"id": "art_9f2c1d7e4b8a6035",
"title": "Apple unveils new on-device AI features, shares rise in premarket trading",
"url": "https://www.example-publisher.com/markets/apple-ai-features",
"source": {
"name": "Example Publisher",
"domain": "example-publisher.com"
},
"publisher": "Example Publisher",
"published_at": "2026-10-06T12:31:04Z",
"ingested_at": "2026-10-06T12:31:09Z",
"category": "stocks",
"type": "news",
"tickers": [
"AAPL"
],
"listings": [
{
"symbol": "AAPL",
"exchange": "NASDAQ"
}
],
"snippet": "Apple on Tuesday introduced a set of on-device AI features for iPhone and Mac, sending the stock higher before the open.",
"summary": "Apple announced new on-device AI features for iPhone and Mac. Shares rose about 2% in premarket trading as analysts called the update a catalyst for the upgrade cycle.",
"body": null,
"entities": [
{
"type": "company",
"name": "Apple Inc.",
"symbol": "AAPL"
},
{
"type": "product",
"name": "iPhone"
}
],
"language": "en"
}
}Try it
GET
https://api.marketnewsapi.com/v1/news/{id}Response
Press Send to call the live API with your key. No key yet? Get one free.Errors
This endpoint returns the standard error format. The most common errors are 400 invalid_parameter, 401 invalid_api_key and 429 daily_limit_reached (Free plan).