curl --request GET \
--url https://api.beta.dealroom.app/data/news \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.beta.dealroom.app/data/news"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.beta.dealroom.app/data/news', 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.beta.dealroom.app/data/news",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.beta.dealroom.app/data/news"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.beta.dealroom.app/data/news")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.beta.dealroom.app/data/news")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": 9876543,
"url": "https://techcrunch.com/2024/06/15/example-startup-raises-50m",
"slug": "example-startup-raises-50m-series-b-2024",
"title": "Example Startup raises $50M Series B led by Sequoia",
"summary": "Example Startup announced a $50M Series B round…",
"preview": "Example Startup announced…",
"image_url": "https://images.example.com/notes/note-9876543.jpg",
"image_source": "Unsplash",
"source": "dealroom",
"article_type": "vc_round",
"category": "Funding rounds",
"news_types": [
{
"id": 3,
"name": "Funding rounds"
},
{
"id": 9,
"name": "Fintech"
}
],
"is_news": true,
"type": "public",
"status": "published",
"published_at": "2024-06-15T09:30:00.000Z",
"amount": 50000000,
"round_type": "SERIES_B",
"deal_date": "2024-06-14",
"sector": "Fintech",
"hq_country": "United States",
"enriched_summary": null,
"importance_score": 87.5,
"is_pinned": false,
"source_urls": [
"https://techcrunch.com/2024/06/15/example-startup-raises-50m"
],
"references": [],
"video_urls": [],
"pitch_deck_urls": [],
"author_entity_id": null,
"author_kind": null,
"created_at": "2024-06-15T10:30:00.000Z",
"updated_at": "2024-06-15T10:30:00.000Z",
"entities": [
{
"mention_role": "subject",
"is_primary": true,
"entity": {
"uuid": "<string>",
"type": "organization",
"subtype": "company",
"name": "<string>",
"image": "<string>",
"dealroom_url": "<string>"
}
}
]
}
],
"page": {
"total": 123,
"limit": 123,
"offset": 123,
"next_cursor": "<string>",
"prev_cursor": "<string>",
"capped": true,
"tier": "anonymous",
"ecosystem": "<string>"
},
"currency": "<string>"
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "The request was malformed or failed validation.",
"details": null
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication required — provide a valid bearer token.",
"details": null
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "<string>",
"details": [
{
"path": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "FORBIDDEN",
"message": "You do not have permission to perform this action.",
"details": null
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded — retry after the delay in the `Retry-After` header.",
"details": null
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "The service is temporarily unavailable.",
"details": null
}
}List news articles
Returns a paginated list of published news articles. Articles can be about deals (VC rounds, IPOs, M&A), insights, events, partnerships, and more. Supports filtering by source, article type, sector, entity, and date range.
curl --request GET \
--url https://api.beta.dealroom.app/data/news \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.beta.dealroom.app/data/news"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.beta.dealroom.app/data/news', 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.beta.dealroom.app/data/news",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.beta.dealroom.app/data/news"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.beta.dealroom.app/data/news")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.beta.dealroom.app/data/news")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": 9876543,
"url": "https://techcrunch.com/2024/06/15/example-startup-raises-50m",
"slug": "example-startup-raises-50m-series-b-2024",
"title": "Example Startup raises $50M Series B led by Sequoia",
"summary": "Example Startup announced a $50M Series B round…",
"preview": "Example Startup announced…",
"image_url": "https://images.example.com/notes/note-9876543.jpg",
"image_source": "Unsplash",
"source": "dealroom",
"article_type": "vc_round",
"category": "Funding rounds",
"news_types": [
{
"id": 3,
"name": "Funding rounds"
},
{
"id": 9,
"name": "Fintech"
}
],
"is_news": true,
"type": "public",
"status": "published",
"published_at": "2024-06-15T09:30:00.000Z",
"amount": 50000000,
"round_type": "SERIES_B",
"deal_date": "2024-06-14",
"sector": "Fintech",
"hq_country": "United States",
"enriched_summary": null,
"importance_score": 87.5,
"is_pinned": false,
"source_urls": [
"https://techcrunch.com/2024/06/15/example-startup-raises-50m"
],
"references": [],
"video_urls": [],
"pitch_deck_urls": [],
"author_entity_id": null,
"author_kind": null,
"created_at": "2024-06-15T10:30:00.000Z",
"updated_at": "2024-06-15T10:30:00.000Z",
"entities": [
{
"mention_role": "subject",
"is_primary": true,
"entity": {
"uuid": "<string>",
"type": "organization",
"subtype": "company",
"name": "<string>",
"image": "<string>",
"dealroom_url": "<string>"
}
}
]
}
],
"page": {
"total": 123,
"limit": 123,
"offset": 123,
"next_cursor": "<string>",
"prev_cursor": "<string>",
"capped": true,
"tier": "anonymous",
"ecosystem": "<string>"
},
"currency": "<string>"
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "The request was malformed or failed validation.",
"details": null
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication required — provide a valid bearer token.",
"details": null
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "<string>",
"details": [
{
"path": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "FORBIDDEN",
"message": "You do not have permission to perform this action.",
"details": null
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded — retry after the delay in the `Retry-After` header.",
"details": null
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "The service is temporarily unavailable.",
"details": null
}
}Authorizations
OAuth2 client-credentials flow against the Dealroom Auth0 tenant. Use the client_id / client_secret from a Programmatic API key. Tokens are valid for 24h — Swagger UI will reuse the same token across operations. Revoking or deactivating a key rejects it on the next request (within a ≤5-minute server-side cache window), not at token expiry.
Headers
Pin a Stripe-style date-based API version (YYYY-MM-DD). Omit to use the latest version (2026-10-09). A pinned version is supported for 30 days after it is superseded, after which it returns 400.
"2026-10-09"
Query Parameters
Filter expression for news articles.
Examples:
- Single: source[eq]:perplexity
- Text search: q[eq]:quantum computing
- AND: and(article_type[eq]:vc_round,amount[gte]:1000000)
- OR: or(source[eq]:perplexity,source[eq]:substack)
Operators: eq, neq, gte, lte, gt, lt, in_any, nin_any Default ref: 'news'
Note: 'q' searches headline + body (full-text with trigram fuzzy fallback) and forces relevance ordering, ignoring 'sort='. Cursor pagination stays within the first 1000 ranked results.
"and(article_type[eq]:vc_round,amount[gte]:1000000)"
Number of results to return (1-2000, default 25)
1 <= x <= 200025
Opaque cursor token from a previous response's page.next_cursor or page.prev_cursor. Round-trip it as-is — do not decode or modify.
"eyJ2IjoxLCJkIjoibmV4dCJ9"
Sort by one or more keys. Prefix with - for descending order; comma-separated for multi-key sorts.
^(?:-?\w+)?(?:,(?:-?\w+)?)*$"-published_at"
Pass true to compute page.total (the matching record count). By default no count query runs and page.total is null.
true
ISO 4217 currency code for monetary field conversion. Defaults to USD.
"EUR"