crawl('https://example.com') ->webhookUrl('https://myapp.com/webhook') ->webhookEventsFilter(['completed', 'failed']) ->blockAds(true) ->timeout(30) ->create(); echo "Crawl job created: " . $crawlJob->getUuid() . "\n"; echo "Status: " . $crawlJob->getStatus() . "\n"; echo "Is queued: " . ($crawlJob->isQueued() ? 'yes' : 'no') . "\n"; // Example 2: Check status with typed response $crawlStatus = $client->getCrawlStatus($crawlJob->getUuid()); if ($crawlStatus->isCompleted()) { echo "HTML content: " . substr($crawlStatus->getResultRaw(), 0, 100) . "...\n"; echo "Download URL: " . $crawlStatus->getResultUrl() . "\n"; // Direct download $htmlContent = $crawlStatus->downloadHtml(); } elseif ($crawlStatus->isFailed()) { echo "Error: " . $crawlStatus->getError() . "\n"; } else { echo "Still processing...\n"; // Refresh status $crawlStatus->refresh(); } // Example 3: Screenshot with fluent interface $shotJob = $client->shot('https://example.com') ->webhookUrl('https://myapp.com/webhook') ->webhookEventsFilter(['completed']) ->viewportSize(1920, 1080) ->quality(90) ->create(); $shotStatus = $client->getShotStatus($shotJob->getUuid()); if ($shotStatus->isCompleted()) { echo "Image format: " . $shotStatus->getFormat() . "\n"; echo "Dimensions: " . implode('x', $shotStatus->getDimensions()) . "\n"; echo "File size: " . $shotStatus->getSize() . " bytes\n"; // Get base64 data or download directly $imageData = $shotStatus->getImageData(); $imageFile = $shotStatus->downloadImage(); } // Example 4: Webhook error management $errors = $client->listWebhookErrors(); foreach ($errors['jobs'] as $errorJob) { echo "Failed webhook for job: " . $errorJob['uuid'] . "\n"; // Retry or clear $client->retryWebhook($errorJob['uuid']); // OR // $client->clearWebhookError($errorJob['uuid']); } // Example 5: Raw response access (backward compatibility) $rawResponse = $crawlStatus->getRawResponse(); echo "Raw response: " . json_encode($rawResponse, JSON_PRETTY_PRINT) . "\n";