ChatGPT said: ...",
"sources": " {
return (
This endpoint autoscales; if you receive a 503 response, maintain traffic and
- expect errors to resolve within a couple minutes.
+ expect errors to resolve within a minute.
);
};
diff --git a/snippets/whitelabel/search/url.mdx b/snippets/whitelabel/search/url.mdx
new file mode 100644
index 0000000..5b23e48
--- /dev/null
+++ b/snippets/whitelabel/search/url.mdx
@@ -0,0 +1,7 @@
+### Alternative URL
+
+```shell
+curl -H "Authorization: Bearer $MASSIVE_TOKEN" \
+'https://render.joinmassive.com/search'\
+'?url=https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3Dfoo%2Bbar%2Bbaz%26hl%3Dfr%26gl%3Dfr%26ie%3DUTF-8'
+```
diff --git a/web-render/ai.mdx b/web-render/ai.mdx
index a4038d6..940d96b 100644
--- a/web-render/ai.mdx
+++ b/web-render/ai.mdx
@@ -84,19 +84,20 @@ Completions are returned as structured JSON, rendered HTML, or raw (unrendered)
If you set the output to JSON, your completion will be parsed into an object with the
[geotargeting keys and values above](#service-usage) and following chat keys and values:
-| Key | Value |
-| :------------------- | :----------------------------------------------------------------------------------------------------------------------- |
-| `model` | The AI model that generated the completion |
-| `query` | The user prompt that the completion was generated for |
-| `html` | The rendered HTML of the entire conversation |
-| `prompt` | The rendered HTML of just the prompt portion of the conversation |
-| `completion` | The rendered HTML of just the completion portion of the conversation |
-| `sources` | The rendered HTML of just the sources portion of the conversation |
-| `ads` | The rendered HTML of just the ads portion of the conversation |
-| `fanouts` | An array of the fanout queries that the model searched to generate the completion; only some models expose these queries |
-| `device` | The emulated device name that the conversation was had on |
-| `language` (planned) | The common name or ISO code of the language that the conversation is in |
-| `display` (planned) | The common name or ISO code of the display language that conversation interface is in |
+| Key | Value |
+| :----------------------- | :----------------------------------------------------------------------------------------------------------------------- |
+| `model` | The AI model that generated the completion |
+| `query` | The user prompt that the completion was generated for |
+| `html` | The rendered HTML of the entire conversation |
+| `prompt` | The rendered HTML of just the prompt portion of the conversation |
+| `completion` | The rendered HTML of just the completion portion of the conversation |
+| `sources` | The rendered HTML of just the sources portion, if any, of the conversation |
+| `ads` | The rendered HTML of just the ads portion, if any, of the conversation |
+| `sse` (ChatGPT only) | The server-sent events JSON that was used to populate the conversation HTML |
+| `fanouts` (ChatGPT only) | An array of the fanout queries that the model searched to generate the completion; only some models expose these queries |
+| `device` | The emulated device name that the conversation was had on |
+| `language` (planned) | The common name or ISO code of the language that the conversation is in |
+| `display` (planned) | The common name or ISO code of the display language that conversation interface is in |
diff --git a/web-render/openapi.json b/web-render/openapi.json
index da2b10c..8d3281a 100644
--- a/web-render/openapi.json
+++ b/web-render/openapi.json
@@ -80,6 +80,16 @@
"schema": { "type": "string", "example": null },
"in": "query"
},
+ {
+ "name": "url",
+ "description": "The encoded URL of the results page to retrieve; if given, the URL overrides any of the above params.",
+ "schema": {
+ "type": "string",
+ "format": "uri",
+ "example": "https://www.google.com/search?q=foo+bar+baz&hl=fr&gl=fr&ie=UTF-8"
+ },
+ "in": "query"
+ },
{
"name": "awaiting",
"description": "The lazy result features to wait to load; any AI overview, which can take significant time to generate, is awaited for a maximum of **1 minute**; multiple features can be provided by repeating the key; lazy results aren’t awaited by default.",
@@ -393,7 +403,7 @@
"description": "The difficulty pool to attempt to access the URL from.",
"schema": {
"type": "string",
- "enum": ["low", "medium", "high (planned)"],
+ "enum": ["low", "medium", "high"],
"default": "low",
"example": "low"
},
@@ -1196,7 +1206,12 @@
"type": "string",
"example": "
Search | 1 |
-| AI | 1 |
+| AI | 5 |
| Browser | 1 |
| Reporting | 0 (free) |
| Administration | 0 (free) |
-A few premium parameters multiply the base cost of calls that use them:
+CDP sessions are billed by time, rounded down to the nearest credit:
-| Service | Key | Value | Credit multiplier |
-| :------ | :----------- | :----------- | :---------------- |
-| Browser | `difficulty` | `medium` | 2 |
-| Browser | `speed` | `ridiculous` | 1.5 |
+| Service | Base credits |
+| :-------------------------------------- | :----------- |
+| Browser CDP | 10 / minute |
+
+A few premium parameters multiply the base cost of calls or sessions that use them:
+
+| Service | Key | Value | Credit multiplier |
+| :------------ | :----------- | :----------- | :---------------- |
+| Browser (CDP) | `difficulty` | `medium` | 2 |
+| Browser (CDP) | `difficulty` | `high` | 5 |
+| Browser | `speed` | `ridiculous` | 2 |
For example, calling the browser service successfully with both `difficulty=medium` and
-`speed=ridiculous` params would cost **3 credits** in total:
+`speed=ridiculous` params would cost **4 credits** in total:
-1 base credit x 2 x 1.5 = 3 total credits
+1 base credit x 2 (difficulty multiplier) x 2 (speed multiplier) = 4 total credits
Create or fund an account.
diff --git a/web-render/search.mdx b/web-render/search.mdx
index f975425..fbf103e 100644
--- a/web-render/search.mdx
+++ b/web-render/search.mdx
@@ -11,6 +11,7 @@ import { Autoscaling } from '/snippets/whitelabel/autoscaling.mdx';
import Authentication from '/snippets/whitelabel/authentication.mdx';
import Terms from '/snippets/whitelabel/search/terms.mdx';
import Offset from '/snippets/whitelabel/search/offset.mdx';
+import Url from '/snippets/whitelabel/search/url.mdx';
import Awaiting from '/snippets/whitelabel/search/awaiting.mdx';
@@ -49,6 +50,7 @@ The keys and values **{companyName}** supports are as follows:
| `uule` | ⬜ | The [proprietary encoded string](https://moz.com/blog/geolocation-the-ultimate-tip-to-emulate-local-search) for emulating the location to search from; if possible, the actual location is searched from not emulated; location emulation is unused by default |
| `language` | ⬜ | The commonly spelled name, [two-letter ISO code](https://www.loc.gov/standards/iso639-2/php/code_list.php), or [Google code](https://www.google.com/advanced_search) of the language to search in (these names and codes are case insensitive but required to include form- or URL-encoded spaces and punctuation marks); the language is unset by default |
| `display` | ⬜ | The commonly spelled name, [two-letter ISO code](https://www.loc.gov/standards/iso639-2/php/code_list.php), or [Google code](https://www.google.com/advanced_search) of the search interface's display language (these names and codes are case insensitive but required to include form- or URL-encoded spaces and punctuation marks); the display language is unset by default or set to the language if given |
+| `url` | ⬜ | The encoded URL of the results page to retrieve; if given, the URL overrides any of the above params |
| `awaiting` | ⬜ | The lazy result features to wait to load, an `ai` overview, "People also ask" `answers`, or sponsored `ads`; any AI overview, which can take significant time to generate, is awaited for a maximum of **1 minute**; multiple features can be provided by repeating the key; lazy results aren't awaited by default |
| `expiration` | ⬜ | The age in days of when to consider cached results expired, where `0` disables caching; `1` is the default number of days before expiration |
@@ -62,4 +64,6 @@ feature infinite scrolling, the HTML of each page will be separated from the nex
+
+