curl --request POST \
--url https://api.anysite.io/api/costar/articles \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"article": "<string>",
"timeout": 300
}
'import requests
url = "https://api.anysite.io/api/costar/articles"
payload = {
"article": "<string>",
"timeout": 300
}
headers = {
"access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({article: '<string>', timeout: 300})
};
fetch('https://api.anysite.io/api/costar/articles', 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.anysite.io/api/costar/articles",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'article' => '<string>',
'timeout' => 300
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access-token: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.anysite.io/api/costar/articles"
payload := strings.NewReader("{\n \"article\": \"<string>\",\n \"timeout\": 300\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("access-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.anysite.io/api/costar/articles")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"article\": \"<string>\",\n \"timeout\": 300\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/costar/articles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"article\": \"<string>\",\n \"timeout\": 300\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"url": "<string>",
"@type": "CostarArticle",
"alias": "<string>",
"article_title": "<string>",
"summary": "<string>",
"text": "<string>",
"is_full_text": false,
"published_at": 123,
"image": "<string>",
"image_caption": "<string>",
"badge": "<string>",
"template_type": "<string>",
"source_locale": "<string>",
"translation_type": "<string>",
"countries": [],
"authors": [],
"categories": [],
"primary_category": {
"id": "<string>",
"@type": "CostarArticleCategory",
"name": "<string>",
"category_type": "<string>"
},
"properties": [],
"companies": [],
"contacts": [],
"funds": [],
"related_articles": []
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}/costar/articles
Get a single CoStar News article by id or URL. Returns the headline, summary, publication time, lead image with caption, bylined authors, category taxonomy and the article text. The most valuable part is the entity linkage CoStar attaches to each story: the commercial properties (name and street address), companies (name and industry), people (name, job title, company) and investment funds the article is about. Note that for most stories text carries the opening paragraph only — is_full_text tells you whether the complete body was published openly.
Price: 10 credits
⚠️ Common errors: 412: Article not found
curl --request POST \
--url https://api.anysite.io/api/costar/articles \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"article": "<string>",
"timeout": 300
}
'import requests
url = "https://api.anysite.io/api/costar/articles"
payload = {
"article": "<string>",
"timeout": 300
}
headers = {
"access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({article: '<string>', timeout: 300})
};
fetch('https://api.anysite.io/api/costar/articles', 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.anysite.io/api/costar/articles",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'article' => '<string>',
'timeout' => 300
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access-token: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.anysite.io/api/costar/articles"
payload := strings.NewReader("{\n \"article\": \"<string>\",\n \"timeout\": 300\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("access-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.anysite.io/api/costar/articles")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"article\": \"<string>\",\n \"timeout\": 300\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/costar/articles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"article\": \"<string>\",\n \"timeout\": 300\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"url": "<string>",
"@type": "CostarArticle",
"alias": "<string>",
"article_title": "<string>",
"summary": "<string>",
"text": "<string>",
"is_full_text": false,
"published_at": 123,
"image": "<string>",
"image_caption": "<string>",
"badge": "<string>",
"template_type": "<string>",
"source_locale": "<string>",
"translation_type": "<string>",
"countries": [],
"authors": [],
"categories": [],
"primary_category": {
"id": "<string>",
"@type": "CostarArticleCategory",
"name": "<string>",
"category_type": "<string>"
},
"properties": [],
"companies": [],
"contacts": [],
"funds": [],
"related_articles": []
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
API token from the dashboard
Headers
Body
Response
Successful Response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes