curl --request GET \
--url https://api.blockworks.com/query/tabular/news-feed \
--header 'X-Blockworks-API-Key: <api-key>'import requests
url = "https://api.blockworks.com/query/tabular/news-feed"
headers = {"X-Blockworks-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Blockworks-API-Key': '<api-key>'}};
fetch('https://api.blockworks.com/query/tabular/news-feed', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.blockworks.com/query/tabular/news-feed",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Blockworks-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.blockworks.com/query/tabular/news-feed"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Blockworks-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.blockworks.com/query/tabular/news-feed")
.header("X-Blockworks-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blockworks.com/query/tabular/news-feed")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Blockworks-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"assetIDs": [
"<string>"
],
"assets": [
{}
],
"documentID": "<string>",
"feedDate": "2023-11-07T05:31:56Z",
"isPriceAnalysis": true,
"isRecommended": true,
"isVideo": true,
"ogImageURL": "<string>",
"publishTimeMillis": 123,
"sourceID": "<string>",
"sourceName": "<string>",
"sourceType": "<string>",
"summary": "<string>",
"title": "<string>",
"url": "<string>"
}
],
"metadata": {
"totalPages": 123,
"totalRows": 123
},
"error": "<string>"
}{
"data": null,
"error": "unknown query parameter \"documentID\""
}{
"data": null,
"error": "this model requires authentication"
}{
"data": null,
"error": "this model requires the \"news_research_unified\" permission"
}{
"data": null,
"error": "tabular model \"unknown-model\" not found"
}List News Items
One row per news item aggregated from crypto media, keyed by documentID: title, URL, summary, image, publish time, source with its type, video, recommended and price-analysis flags, and the assets mentioned. Filter by date, source, flag or asset; sort by feedDate descending for newest first.
curl --request GET \
--url https://api.blockworks.com/query/tabular/news-feed \
--header 'X-Blockworks-API-Key: <api-key>'import requests
url = "https://api.blockworks.com/query/tabular/news-feed"
headers = {"X-Blockworks-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Blockworks-API-Key': '<api-key>'}};
fetch('https://api.blockworks.com/query/tabular/news-feed', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.blockworks.com/query/tabular/news-feed",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Blockworks-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.blockworks.com/query/tabular/news-feed"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Blockworks-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.blockworks.com/query/tabular/news-feed")
.header("X-Blockworks-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blockworks.com/query/tabular/news-feed")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Blockworks-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"assetIDs": [
"<string>"
],
"assets": [
{}
],
"documentID": "<string>",
"feedDate": "2023-11-07T05:31:56Z",
"isPriceAnalysis": true,
"isRecommended": true,
"isVideo": true,
"ogImageURL": "<string>",
"publishTimeMillis": 123,
"sourceID": "<string>",
"sourceName": "<string>",
"sourceType": "<string>",
"summary": "<string>",
"title": "<string>",
"url": "<string>"
}
],
"metadata": {
"totalPages": 123,
"totalRows": 123
},
"error": "<string>"
}{
"data": null,
"error": "unknown query parameter \"documentID\""
}{
"data": null,
"error": "this model requires authentication"
}{
"data": null,
"error": "this model requires the \"news_research_unified\" permission"
}{
"data": null,
"error": "tabular model \"unknown-model\" not found"
}Authorizations
API key sent in the X-Blockworks-API-Key header; x-messari-api-key is accepted for existing integrations. The catalog endpoints and models on the public access tier need no key.
Query Parameters
Document ID equals.
Document ID is one of (comma-separated).
Feed Date equals.
Feed Date is greater than.
Feed Date is greater than or equal to.
Feed Date is less than.
Feed Date is less than or equal to.
Publish Time Millis is greater than.
Publish Time Millis is greater than or equal to.
Publish Time Millis is less than.
Publish Time Millis is less than or equal to.
Source ID equals.
Source ID is one of (comma-separated).
Source ID is not one of (comma-separated).
Source Name equals.
Source Name is one of (comma-separated).
Source Type equals.
Source Type is one of (comma-separated).
Source Type is not one of (comma-separated).
Is Video equals.
Is Video does not equal.
Is Recommended equals.
Is Recommended does not equal.
Is Price Analysis equals.
Is Price Analysis does not equal.
Asset IDs array includes.
Asset IDs array does not include.
Asset IDs array includes any of (comma-separated).
Asset IDs array includes none of (comma-separated).
Field to sort by; defaults to the model's default sort column.
feedDate, publishTimeMillis Sort direction.
asc, desc 1-based page number.
Rows per page (max 1000, default 100).
Comma-separated fields to return; defaults to all fields.
documentID, title, url, summary, feedDate, publishTimeMillis, sourceID, sourceName, sourceType, isVideo, isRecommended, isPriceAnalysis, ogImageURL, assetIDs, assets Response format, overriding the Accept header: json (default), csv, or jsonl (NDJSON). csv and jsonl return the rows as a downloadable file.
json, csv, jsonl