curl --request GET \
--url https://dripstack.com/api/v1/searchimport requests
url = "https://dripstack.com/api/v1/search"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://dripstack.com/api/v1/search', 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://dripstack.com/api/v1/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://dripstack.com/api/v1/search"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://dripstack.com/api/v1/search")
.asString();require 'uri'
require 'net/http'
url = URI("https://dripstack.com/api/v1/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"mode": "hybrid",
"asOf": "2026-06-15T10:30:00Z",
"query": "AI infrastructure spending",
"normalizedQuery": "ai infrastructure spending",
"matchConfidence": "strong",
"searchTierUsed": "scoped",
"timeWindow": {
"label": "last_week",
"startIso": "2026-06-08T00:00:00Z",
"endIso": "2026-06-15T00:00:00Z",
"days": 7
},
"freshnessCoverage": {
"requestedWindow": {
"label": "last_week",
"startIso": "2026-06-08T00:00:00Z",
"endIso": "2026-06-15T00:00:00Z",
"days": 7
},
"rankedInWindow": 4,
"researchCandidatesInWindow": 12,
"staleFallbackMode": false
},
"totalCount": 4,
"count": 3,
"items": [
{
"publicationSlug": "stratechery",
"slug": "the-ai-infrastructure-boom",
"title": "The AI Infrastructure Boom",
"subtitle": "Why hyperscalers are spending billions on GPU clusters",
"priceCents": 50,
"isPodcast": false,
"isScopedPublisher": true,
"relevanceScore": 0.92,
"matchedTokenCount": 3,
"totalTokenCount": 3,
"topicCoverageRatio": 1,
"whyMatched": [
"Title matches AI + infrastructure",
"Body discusses capex spending"
],
"publishedAt": "2026-06-14T12:00:00Z",
"isInTimeWindow": true,
"snippet": "Nvidia's datacenter revenue hit $26B last quarter as hyperscalers race to build out GPU clusters..."
}
]
}{
"error": "<string>",
"issues": {}
}{
"error": "<string>"
}Search premium financial newsletter and podcast posts by topic.
curl --request GET \
--url https://dripstack.com/api/v1/searchimport requests
url = "https://dripstack.com/api/v1/search"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://dripstack.com/api/v1/search', 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://dripstack.com/api/v1/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://dripstack.com/api/v1/search"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://dripstack.com/api/v1/search")
.asString();require 'uri'
require 'net/http'
url = URI("https://dripstack.com/api/v1/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"mode": "hybrid",
"asOf": "2026-06-15T10:30:00Z",
"query": "AI infrastructure spending",
"normalizedQuery": "ai infrastructure spending",
"matchConfidence": "strong",
"searchTierUsed": "scoped",
"timeWindow": {
"label": "last_week",
"startIso": "2026-06-08T00:00:00Z",
"endIso": "2026-06-15T00:00:00Z",
"days": 7
},
"freshnessCoverage": {
"requestedWindow": {
"label": "last_week",
"startIso": "2026-06-08T00:00:00Z",
"endIso": "2026-06-15T00:00:00Z",
"days": 7
},
"rankedInWindow": 4,
"researchCandidatesInWindow": 12,
"staleFallbackMode": false
},
"totalCount": 4,
"count": 3,
"items": [
{
"publicationSlug": "stratechery",
"slug": "the-ai-infrastructure-boom",
"title": "The AI Infrastructure Boom",
"subtitle": "Why hyperscalers are spending billions on GPU clusters",
"priceCents": 50,
"isPodcast": false,
"isScopedPublisher": true,
"relevanceScore": 0.92,
"matchedTokenCount": 3,
"totalTokenCount": 3,
"topicCoverageRatio": 1,
"whyMatched": [
"Title matches AI + infrastructure",
"Body discusses capex spending"
],
"publishedAt": "2026-06-14T12:00:00Z",
"isInTimeWindow": true,
"snippet": "Nvidia's datacenter revenue hit $26B last quarter as hyperscalers race to build out GPU clusters..."
}
]
}{
"error": "<string>",
"issues": {}
}{
"error": "<string>"
}Query Parameters
Natural-language query string.
2Maximum number of items returned (1-30).
1 <= x <= 30Search mode. fts is lexical only; hybrid blends lexical and semantic.
fts, hybrid Restrict results to one ingestion platform. rss is generic RSS; podcast is podcast RSS.
substack, beehiiv, rss, podcast, email, twitter Restrict by source type. newsletter is every platform that is not podcast RSS. Incompatible with a conflicting platform.
newsletter, podcast, all Restrict results to one publication.
Inclusive UTC calendar day lower bound, YYYY-MM-DD.
Inclusive UTC calendar day upper bound, YYYY-MM-DD.
Response
Search results.
Search mode used.
fts, hybrid Server timestamp when the response was generated.
Original search query.
Normalized query after preprocessing.
Overall match confidence for the query.
strong, weak, none Whether scoped (preferred) or non-scoped publishers were used.
scoped, non_scoped Resolved time window for the search, if applicable.
Show child attributes
Show child attributes
Freshness and coverage metadata for the time window.
Show child attributes
Show child attributes
Total matching results before limit.
x >= 0Number of results returned.
x >= 0Ranked search results.
Show child attributes
Show child attributes

