POST https://api.acedata.cloud/webextrator/render
The WebExtrator Web Page Rendering API is a web page rendering service based on headless Chromium. Given a URL,
it returns fully rendered HTML (including JS-injected content), plain text, page title, and the final URL.
Render is the lowest-level interface of WebExtrator. If you need structured extraction results (article body,
product prices, recipe ingredients …), please use
/webextrator/extract —— it runs a complete typed extraction pipeline
on the same rendering foundation.
Application Process
To use the WebExtrator service page, first go to the Ace Data Cloud Console to obtain your API Token and keep it for later use.
If you have not logged in or registered, you will be automatically redirected to the login page inviting you to register and log in. After completion, you will automatically return to the current page.
One API Token can invoke all services on the platform; there is no need to apply separately for each service. Your first application includes free credits for a free trial; when credits are insufficient, you can recharge your general balance in the Console.
📘 Full documentation: WebExtrator Service Page →
Authentication
All WebExtrator interfaces use standard Bearer Token authentication:Request Parameters
The platform contract uniformly uses snake_case. The internal rendering service supports camelCase, but external calls must always use snake_case.
Cookie Structure
Synchronous Response
Asynchronous Response
Whenasync=true (or callback_url is provided), it immediately returns (HTTP 200):
POST to callback_url (if configured), or actively queried through
/webextrator/tasks.
Callback Structure
The platformPOSTs an envelope identical to synchronous mode to callback_url,
with Content-Type: application/json. Returning any 2xx is considered acknowledged; 5xx will be
retried with exponential backoff for approximately 5 minutes.
Error Responses
Error structure:
Examples
cURL
Python (requests)
Node.js (fetch)
Async + Callback
{ "success": true, "task_id": "...", "trace_id": "...", "started_at": 1777717800.123 };
when the task is completed, the platform will POST the full result to your callback_url.
Force Cache Bypass
Tips and Pitfalls
- Choosing the right
wait_untilis important.networkidleis the most stable but slowest;domcontentloadedis fast but may miss asynchronously injected content;loadis suitable for traditional static pages. - The cache Key ignores
async. Synchronous and asynchronous requests for the same URL hit the same cache entry, so switching freely will not invalidate it. - The cache Key ignores
bypass_cacheandcache_ttl_seconds. These two are operation switches, and do not affect the response content. cookiesandheadersseparate cache buckets. Customizing these two will cause the first hit for the same combination to fail.- Heavy SPAs often exceed the default 30 seconds. It is recommended to use
timeout: 60,wait_until: "domcontentloaded",delay: 4, together withwait_for_selectorto wait for the elements you actually care about. block_resourcesis the fastest path to reducing latency. Images / fonts / media are blocked by default; if your extraction does not rely on CSS layout, addingstylesheetcan make it even faster.

