Use one complete challenge image and describe exactly what should be clicked. Keep the original width and height. If more than one point may be needed, set maxClicks explicitly: its default is minClicks, which defaults to 1.
Each task reserves $0.015 from your wallet. Successful tasks cost 1.5 times the provider cost; unused reserved credit is returned. Failed tasks are not charged. Billing details
Ask for exact object centers when possible.
Use minClicks and maxClicks when the answer may contain multiple objects.
Coordinates are measured from the top-left corner of the uploaded image.
For the complete examples, prepare challenge.png. You can change these filenames in the code.
Maximum points, minClicks to 20. Default: minClicks.
Decoded file limits use 1 KB = 1,000 bytes. The complete JSON payload must fit within 5,000,000 bytes after Base64 encoding.
03 / Result
Understand the result
Creation returns HTTP 201. Fetching the task returns HTTP 200. Both wrap the task in task; always check its status before reading the solution.
Each x/y pair is a point in the original image. For example, (320, 200) means 320 pixels from the left and 200 pixels from the top. If your interface displays the image at another size, scale x and y separately before using the point.
Click points in original-image pixels. Origin (0, 0) is the top-left; x increases rightward and y downward. Scale both axes if the display size differs.
Saved instructions and input metadata. Raw files are not returned.
04 / Integrate
Complete examples
These Node.js and Python scripts prepare the input, create one task and poll until it is ready or failed. They stop waiting after approximately 3 minutes. A client timeout does not cancel the task.
Set SCRAPINGBUDDY_API_KEY in your server environment.
Place the input files beside your script, or update the filenames.
For Node.js, use version 20+ and save as solve.mjs. For Python, install requests and save as solve.py.
Run the script and retain the printed request and task IDs.
cURL shows task creation only. Use the GET example to retrieve its result.
When something goes wrong
Check whether you received an HTTP error or a task with status: failed. Fix validation errors before retrying. For HTTP 429, pause for Retry-After; all requests share the account limit of 60 per minute.
If creation times out, do not automatically submit another task. Keep your request ID and check the existing task or Usage first.