Get raw response
GET /accounts/{account_id}/urlscanner/response/{response_id}
Returns the plain response of the network request.
Responses
200 When har.log.entries[].response._cf.contentAvailable is true, use response._cf.hash value to fetch the raw response.
Data is at
body["result"]
400 Invalid params.
{
"errors": [
{
"message": "*string*"
}
],
"messages": [
{
"message": "*string*"
}
],
"success": "*boolean*"
}404 Scan not found.
{
"errors": [
{
"message": "*string*"
}
],
"messages": [
{
"message": "*string*"
}
],
"success": "*boolean*"
}Create URL Scan
POST /accounts/{account_id}/urlscanner/scan
Submit a URL to scan. You can also set some options, like the visibility level and custom headers. Check limits at https://developers.cloudflare.com/security-center/investigate/scan-limits/.
Responses
200 Scan request accepted successfully.
Data is at
body["result"]
{
"time": "*string*",
"url": "*string*",
"uuid": "*string*",
"visibility": "*string*"
}400 Invalid params.
{
"errors": [
{
"message": "*string*"
}
],
"messages": [
{
"message": "*string*"
}
],
"success": "*boolean*"
}409 Scan request denied: hostname was recently scanned.
{
"errors": [
{
"message": "*string*"
}
],
"messages": [
{
"message": "*string*"
}
],
"result": {
"tasks": [
{
"clientLocation": "*string*",
"clientType": "*string*",
"effectiveUrl": "*string*",
"errors": [
{
"message": null
}
],
"scannedFrom": {
"colo": "*string*"
},
"status": "*string*",
"success": "*boolean*",
"time": "*string*",
"timeEnd": "*string*",
"url": "*string*",
"uuid": "*string*",
"visibility": "*string*"
}
]
},
"success": "*boolean*"
}429 Scan request denied: rate limited.
{
"errors": [
{
"message": "*string*"
}
],
"messages": [
{
"message": "*string*"
}
],
"success": "*boolean*"
}Search URL scans
GET /accounts/{account_id}/urlscanner/scan
Search scans by date and webpages' requests, including full URL (after redirects), hostname, and path. <br/> A successful scan will appear in search results a few minutes after finishing but may take much longer if the system in under load. By default, only successfully completed scans will appear in search results, unless searching by scanId. Please take into account that older scans may be removed from the search index at an unspecified time.
Responses
200 Search results
Data is at
body["result"]
{
"tasks": [
{
"country": "*string*",
"success": "*boolean*",
"time": "*string*",
"url": "*string*",
"uuid": "*string*",
"visibility": "*string*"
}
]
}400 Invalid params.
{
"errors": [
{
"message": "*string*"
}
],
"messages": [
{
"message": "*string*"
}
],
"success": "*boolean*"
}Get URL scan
GET /accounts/{account_id}/urlscanner/scan/{scan_id}
Get URL scan by uuid
Responses
200 Scan has finished. It may or may not have been successful.
Data is at
body["result"]
{
"scan": {
"asns": {
"asn": {
"asn": "*string*",
"description": "*string*",
"location_alpha2": "*string*",
"name": "*string*",
"org_name": "*string*"
}
},
"certificates": [
{
"issuer": "*string*",
"subjectName": "*string*",
"validFrom": "*number*",
"validTo": "*number*"
}
],
"domains": {
"example.com": {
"categories": {
"content": [
null
],
"inherited": {
"content": null,
"from": null,
"risks": null
},
"risks": [
null
]
},
"dns": [
{
"address": null,
"dnssec_valid": null,
"name": null,
"type": null
}
],
"name": "*string*",
"rank": {
"bucket": "*string*",
"name": "*string*",
"rank": "*integer*"
},
"type": "*string*"
}
},
"geo": {
"continents": [
"*string*"
],
"locations": [
"*string*"
]
},
"ips": {
"ip": {
"asn": "*string*",
"asnDescription": "*string*",
"asnLocationAlpha2": "*string*",
"asnName": "*string*",
"asnOrgName": "*string*",
"continent": "*string*",
"geonameId": "*string*",
"ip": "*string*",
"ipVersion": "*string*",
"latitude": "*string*",
"locationAlpha2": "*string*",
"locationName": "*string*",
"longitude": "*string*",
"subdivision1Name": "*string*",
"subdivision2Name": "*string*"
}
},
"links": {
"link": {
"href": "*string*",
"text": "*string*"
}
},
"meta": {
"processors": {
"categories": {
"content": [
null
],
"risks": [
null
]
},
"phishing": [
"*string*"
],
"rank": {
"bucket": "*string*",
"name": "*string*",
"rank": "*integer*"
},
"tech": [
{
"categories": null,
"confidence": null,
"description": null,
"evidence": null,
"icon": null,
"name": null,
"slug": null,
"website": null
}
]
}
},
"page": {
"asn": "*string*",
"asnLocationAlpha2": "*string*",
"asnname": "*string*",
"console": [
{
"category": "*string*",
"text": "*string*",
"type": "*string*",
"url": "*string*"
}
],
"cookies": [
{
"domain": "*string*",
"expires": "*number*",
"httpOnly": "*boolean*",
"name": "*string*",
"path": "*string*",
"priority": "*string*",
"sameParty": "*boolean*",
"secure": "*boolean*",
"session": "*boolean*",
"size": "*number*",
"sourcePort": "*number*",
"sourceScheme": "*string*",
"value": "*string*"
}
],
"country": "*string*",
"countryLocationAlpha2": "*string*",
"domain": "*string*",
"headers": [
{
"name": "*string*",
"value": "*string*"
}
],
"ip": "*string*",
"js": {
"variables": [
{
"name": null,
"type": null
}
]
},
"securityViolations": [
{
"category": "*string*",
"text": "*string*",
"url": "*string*"
}
],
"status": "*number*",
"subdivision1Name": "*string*",
"subdivision2name": "*string*",
"url": "*string*"
},
"performance": [
{
"connectEnd": "*number*",
"connectStart": "*number*",
"decodedBodySize": "*number*",
"domComplete": "*number*",
"domContentLoadedEventEnd": "*number*",
"domContentLoadedEventStart": "*number*",
"domInteractive": "*number*",
"domainLookupEnd": "*number*",
"domainLookupStart": "*number*",
"duration": "*number*",
"encodedBodySize": "*number*",
"entryType": "*string*",
"fetchStart": "*number*",
"initiatorType": "*string*",
"loadEventEnd": "*number*",
"loadEventStart": "*number*",
"name": "*string*",
"nextHopProtocol": "*string*",
"redirectCount": "*number*",
"redirectEnd": "*number*",
"redirectStart": "*number*",
"requestStart": "*number*",
"responseEnd": "*number*",
"responseStart": "*number*",
"secureConnectionStart": "*number*",
"startTime": "*number*",
"transferSize": "*number*",
"type": "*string*",
"unloadEventEnd": "*number*",
"unloadEventStart": "*number*",
"workerStart": "*number*"
}
],
"task": {
"clientLocation": "*string*",
"clientType": "*string*",
"effectiveUrl": "*string*",
"errors": [
{
"message": "*string*"
}
],
"scannedFrom": {
"colo": "*string*"
},
"status": "*string*",
"success": "*boolean*",
"time": "*string*",
"timeEnd": "*string*",
"url": "*string*",
"uuid": "*string*",
"visibility": "*string*"
},
"verdicts": {
"overall": {
"categories": [
{
"id": null,
"name": null,
"super_category_id": null
}
],
"malicious": "*boolean*",
"phishing": [
"*string*"
]
}
}
}
}202 Scan is in progress. Check current status in result.scan.task.status. Possible statuses: Queued,InProgress,InPostProcessing,Finished.
Data is at
body["result"]
{
"scan": {
"task": {
"effectiveUrl": "*string*",
"errors": [
{
"message": "*string*"
}
],
"location": "*string*",
"region": "*string*",
"status": "*string*",
"success": "*boolean*",
"time": "*string*",
"url": "*string*",
"uuid": "*string*",
"visibility": "*string*"
}
}
}400 Invalid params.
{
"errors": [
{
"message": "*string*"
}
],
"messages": [
{
"message": "*string*"
}
],
"success": "*boolean*"
}404 Scan not found.
{
"errors": [
{
"message": "*string*"
}
],
"messages": [
{
"message": "*string*"
}
],
"success": "*boolean*"
}Get URL scan's HAR
GET /accounts/{account_id}/urlscanner/scan/{scan_id}/har
Get a URL scan's HAR file. See HAR spec at http://www.softwareishard.com/blog/har-12-spec/.
Responses
200 Returns the scan's har.
Data is at
body["result"]
{
"har": {
"log": {
"creator": {
"comment": "*string*",
"name": "*string*",
"version": "*string*"
},
"entries": [
{
"_initialPriority": "*string*",
"_initiator_type": "*string*",
"_priority": "*string*",
"_requestId": "*string*",
"_requestTime": "*number*",
"_resourceType": "*string*",
"cache": {},
"connection": "*string*",
"pageref": "*string*",
"request": {
"bodySize": null,
"headers": null,
"headersSize": null,
"httpVersion": null,
"method": null,
"url": null
},
"response": {
"_transferSize": null,
"bodySize": null,
"content": null,
"headers": null,
"headersSize": null,
"httpVersion": null,
"redirectURL": null,
"status": null,
"statusText": null
},
"serverIPAddress": "*string*",
"startedDateTime": "*string*",
"time": "*number*"
}
],
"pages": [
{
"id": "*string*",
"pageTimings": {
"onContentLoad": null,
"onLoad": null
},
"startedDateTime": "*string*",
"title": "*string*"
}
],
"version": "*string*"
}
}
}202 Scan is in progress. Check current status in result.scan.task.status. Possible statuses: Queued,InProgress,InPostProcessing,Finished.
Data is at
body["result"]
{
"scan": {
"task": {
"effectiveUrl": "*string*",
"errors": [
{
"message": "*string*"
}
],
"location": "*string*",
"region": "*string*",
"status": "*string*",
"success": "*boolean*",
"time": "*string*",
"url": "*string*",
"uuid": "*string*",
"visibility": "*string*"
}
}
}400 Invalid params.
{
"errors": [
{
"message": "*string*"
}
],
"messages": [
{
"message": "*string*"
}
],
"success": "*boolean*"
}404 Scan not found.
{
"errors": [
{
"message": "*string*"
}
],
"messages": [
{
"message": "*string*"
}
],
"success": "*boolean*"
}Get screenshot
GET /accounts/{account_id}/urlscanner/scan/{scan_id}/screenshot
Get scan's screenshot by resolution (desktop/mobile/tablet).
Responses
200 Returns the scan's requested screenshot.
Data is at
body["result"]
202 Scan is in progress. Check current status in result.scan.task.status. Possible statuses: Queued,InProgress,InPostProcessing,Finished.
Data is at
body["result"]
{
"scan": {
"task": {
"effectiveUrl": "*string*",
"errors": [
{
"message": "*string*"
}
],
"location": "*string*",
"region": "*string*",
"status": "*string*",
"success": "*boolean*",
"time": "*string*",
"url": "*string*",
"uuid": "*string*",
"visibility": "*string*"
}
}
}400 Invalid params.
{
"errors": [
{
"message": "*string*"
}
],
"messages": [
{
"message": "*string*"
}
],
"success": "*boolean*"
}404 Scan not found.
{
"errors": [
{
"message": "*string*"
}
],
"messages": [
{
"message": "*string*"
}
],
"success": "*boolean*"
}