Start Discovery
curl --request POST \
--url https://api.forestreet.com/markets/discover \
--header 'Content-Type: application/json' \
--data '
{
"type": "<string>",
"marketId": "<string>",
"marketName": "<string>",
"marketRole": "<string>",
"searchTerms": [
"<string>"
],
"domains": [
"<string>"
],
"country": "<string>",
"countries": [
"<string>"
]
}
'import requests
url = "https://api.forestreet.com/markets/discover"
payload = {
"type": "<string>",
"marketId": "<string>",
"marketName": "<string>",
"marketRole": "<string>",
"searchTerms": ["<string>"],
"domains": ["<string>"],
"country": "<string>",
"countries": ["<string>"]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
type: '<string>',
marketId: '<string>',
marketName: '<string>',
marketRole: '<string>',
searchTerms: ['<string>'],
domains: ['<string>'],
country: '<string>',
countries: ['<string>']
})
};
fetch('https://api.forestreet.com/markets/discover', 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.forestreet.com/markets/discover",
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([
'type' => '<string>',
'marketId' => '<string>',
'marketName' => '<string>',
'marketRole' => '<string>',
'searchTerms' => [
'<string>'
],
'domains' => [
'<string>'
],
'country' => '<string>',
'countries' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.forestreet.com/markets/discover"
payload := strings.NewReader("{\n \"type\": \"<string>\",\n \"marketId\": \"<string>\",\n \"marketName\": \"<string>\",\n \"marketRole\": \"<string>\",\n \"searchTerms\": [\n \"<string>\"\n ],\n \"domains\": [\n \"<string>\"\n ],\n \"country\": \"<string>\",\n \"countries\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.forestreet.com/markets/discover")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"<string>\",\n \"marketId\": \"<string>\",\n \"marketName\": \"<string>\",\n \"marketRole\": \"<string>\",\n \"searchTerms\": [\n \"<string>\"\n ],\n \"domains\": [\n \"<string>\"\n ],\n \"country\": \"<string>\",\n \"countries\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.forestreet.com/markets/discover")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"<string>\",\n \"marketId\": \"<string>\",\n \"marketName\": \"<string>\",\n \"marketRole\": \"<string>\",\n \"searchTerms\": [\n \"<string>\"\n ],\n \"domains\": [\n \"<string>\"\n ],\n \"country\": \"<string>\",\n \"countries\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"marketId": 2
}
Discover
Start Discovery
This endpoint starts an on-demand discovery to find companies for a market.
POST
/
markets
/
discover
Start Discovery
curl --request POST \
--url https://api.forestreet.com/markets/discover \
--header 'Content-Type: application/json' \
--data '
{
"type": "<string>",
"marketId": "<string>",
"marketName": "<string>",
"marketRole": "<string>",
"searchTerms": [
"<string>"
],
"domains": [
"<string>"
],
"country": "<string>",
"countries": [
"<string>"
]
}
'import requests
url = "https://api.forestreet.com/markets/discover"
payload = {
"type": "<string>",
"marketId": "<string>",
"marketName": "<string>",
"marketRole": "<string>",
"searchTerms": ["<string>"],
"domains": ["<string>"],
"country": "<string>",
"countries": ["<string>"]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
type: '<string>',
marketId: '<string>',
marketName: '<string>',
marketRole: '<string>',
searchTerms: ['<string>'],
domains: ['<string>'],
country: '<string>',
countries: ['<string>']
})
};
fetch('https://api.forestreet.com/markets/discover', 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.forestreet.com/markets/discover",
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([
'type' => '<string>',
'marketId' => '<string>',
'marketName' => '<string>',
'marketRole' => '<string>',
'searchTerms' => [
'<string>'
],
'domains' => [
'<string>'
],
'country' => '<string>',
'countries' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.forestreet.com/markets/discover"
payload := strings.NewReader("{\n \"type\": \"<string>\",\n \"marketId\": \"<string>\",\n \"marketName\": \"<string>\",\n \"marketRole\": \"<string>\",\n \"searchTerms\": [\n \"<string>\"\n ],\n \"domains\": [\n \"<string>\"\n ],\n \"country\": \"<string>\",\n \"countries\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.forestreet.com/markets/discover")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"<string>\",\n \"marketId\": \"<string>\",\n \"marketName\": \"<string>\",\n \"marketRole\": \"<string>\",\n \"searchTerms\": [\n \"<string>\"\n ],\n \"domains\": [\n \"<string>\"\n ],\n \"country\": \"<string>\",\n \"countries\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.forestreet.com/markets/discover")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"<string>\",\n \"marketId\": \"<string>\",\n \"marketName\": \"<string>\",\n \"marketRole\": \"<string>\",\n \"searchTerms\": [\n \"<string>\"\n ],\n \"domains\": [\n \"<string>\"\n ],\n \"country\": \"<string>\",\n \"countries\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"marketId": 2
}
Body Request Object Example
{
"type": "keyword",
"marketId": null,
"marketName": "Transcription Services",
"searchTerms": ["AI Transcription"],
"domains": ["ai-media.tv", "rev.com"],
"countries": ["all", "US", "GB"]
}
Body
string
default:"keyword"
This is the type of search you would like to run. Default is keyword, more options coming soon.
string
default:"null"
If you want to find more companies in an existing market, you can provide the
marketId here. New companies will be added to this market.If you want to start a new market, you can leave this field empty or set it to null.Access Permissions: If you do not have permission to access the market, or the market does not exists, a
To prevent predictable serial number attacks, this end point does not distinguish between a market that does not exist and a market that you do not have access to.
403 FORBIDDEN will be emitted instead.To prevent predictable serial number attacks, this end point does not distinguish between a market that does not exist and a market that you do not have access to.
Divergent markets within the same study: It is up to the caller to ensure
that the market definition remains consistent between discoveries. You are
permitted to search a completely different market with the same
marketId, but this
is strongly advised against since the market analysis may not be able to
understand divergent market properties, and produce misappropriated features and
insights.string
required
This is the name of the market you would like to search for.
string
Try to limit the companies to ones that fit a specific role in the market.
Possible values are:
"manufacturer"- physical product manufacturing, e.g. a car manufacturer"distributor"- physical product distribution, e.g. a car dealership"service provider"- contractor or provider of pre-defined services, e.g. a car repair shop"consultant"- consultants or advisers not themselves participating in the market, but offers advice to those who do, e.g. a motor regulatory consultant
"manufacturer" if the
market is too broad.It is recommended to write your intended role in the market name, which the AI will be able to infer from. Supplying a
marketRole incompatible with the market name might degrade the output.array<string>
default:"[]"
This is an array of search terms to use for the search. If no search terms are provided, we automatically generate a
list of search terms related to the market name.
array<string>
default:"[]"
This is an array of domains to use for the search. If no domains are provided, we automatically generate a list of domains related to the market name.This is typically not required. The discovery process heavily relies on the market and the keywords; the domains are
only used to infer the scope of the market. They are guaranteed to be included in the results.
string
default:"all"
deprecated
This is the country you would like to search in.
Only one of
country or countries should be provided; otherwise a 400 BAD REQUEST will be returned with an error
message.This parameter is deprecated and is supported for backward compatibility only. Please use
countries instead.array<string>
default:"['all']"
This is an array of countries you would like to search in. You can supply up to 5 ISO-3166-1 alpha-2 country codes, including up to one instance
of
all, which represents a global search in addition to other specified countries.Currently, candidates from all countries are pooled together for evaluation; it does not guarantee that some candidates
will be returned from each specified country. This search assumes the user is interested in candidates from any of the
specified countries.Defaults to ['all'].Only one of
country or countries should be provided; otherwise a 400 BAD REQUEST will be returned with an error message.Response
number
A unique identifier for the market, used to retrieve the progress and results.
{
"marketId": 2
}