Documentation Index
Fetch the complete documentation index at: https://docs.searchable.com/llms.txt
Use this file to discover all available pages before exploring further.
What this does
Akamai DataStream 2 ships near-real-time request logs from your Akamai properties to a destination of your choosing. We point that stream at Searchable’s tracker endpoint, classify the AI bots at the edge, and drop everything else. No code changes — all configuration happens inside Akamai Control Center.Prerequisites
Setup
Generate an integration token in Searchable
- Open your Searchable dashboard
- Go to LLM Analytics → Setup
- Pick Akamai as your crawler source
- Click Generate token
sa_… and won’t be shown again. You can always generate a new one if you lose it.The endpoint URL is fixed:Open the DataStream 2 wizard
Searchable LLM Analytics and assign it to the group that contains the property fronting your domain. Pick the property that serves the traffic you want Searchable to see — DataStream is scoped per-property, not per-account.Pick the data sets (log format fields)
reqID uses a capital ID, and the sub-country admin region is state (not region).Required (the endpoint drops records missing any of these):reqIDreqMethodreqHostreqPathUAstatusCodecliIPreqEndTimeMSec
queryStrreferer(HTTP-standard single-r spelling)rspContentLenturnAroundTimeMSeccacheStatuscountrystatecityedgeIPtlsVersion
Configure the HTTPS delivery
| Field | Value |
|---|---|
| Endpoint URL | https://searchable-tracker.searchable.workers.dev/v1/akamai-logs |
| Authentication | None |
| Custom HTTP header — name | Authorization |
| Custom HTTP header — value | Bearer <your-sa_-token> |
| Compress files | Off (see note below) |
Content-Encoding: gzip automatically and our endpoint decompresses on the way in.Set the upload frequency
Validate and activate the stream
GET to the endpoint URL and expects a 200 response — Searchable’s tracker responds with a literal ok. If validation fails, see Troubleshooting below.Once validation succeeds, click Activate. Akamai activation typically completes within a couple of minutes on Staging and 5–10 minutes on Production. Once active, expect events in Searchable as soon as an AI bot hits your site.Verifying the connection
In Searchable:- Go to LLM Analytics → Setup
- Look at the Akamai card status
- Click Check if it still shows “Waiting for first event”
| Status | What it means |
|---|---|
| Waiting for first event | The stream is configured but no AI bot has hit your site yet. Typical wait is a few hours for sites that are already indexed. |
| Connected | Events are arriving. The card shows the count from the last 24 hours. |
204 responses.
What Searchable receives
For each request that matches an AI-bot user agent, Searchable receives:- HTTP method, path, and host (query strings stripped before storage)
- User agent
- Referer
- Country, state, and city (from
country/state/city) - Response status and bytes out (
rspContentLen) - Edge turnaround time (
turnAroundTimeMSec) - Akamai edge metadata (
edgeIP,tlsVersion,cacheStatus) — preserved ascustom_propertiesfor debugging - The DataStream 2
reqID— used as the dedup key on our side
User-Agent / Referer, cookies, and full IPs are never sent or stored. The DataStream 2 reqID is hashed into a deterministic event ID so retried batches collapse into a single event server-side.
Troubleshooting
Validation fails on 'Validate and save'
Validation fails on 'Validate and save'
GET against your endpoint URL and expects 200. The two common reasons it fails:- Typo in the URL — the correct value is exactly
https://searchable-tracker.searchable.workers.dev/v1/akamai-logs. No trailing slash, no path suffix. - A custom Akamai delivery network policy is blocking egress to
*.workers.dev. In strict environments this surfaces as a connection error rather than a 4xx. If you suspect this, ask your Akamai admin to allow-list the endpoint hostname for the delivery property.
Validate and save only verifies that the URL is reachable. Auth issues surface in the Monitor tab after the stream activates.Searchable shows 401 errors or the card stays 'Not connected'
Searchable shows 401 errors or the card stays 'Not connected'
- Make sure you added a custom HTTP header named exactly
Authorization(notX-Authorization, notBearer) - The value must be
Bearerfollowed by the fullsa_…token, with one space and no quotes - Confirm the Authentication dropdown is set to None — picking Basic there overrides the custom header
- If you’ve recently revoked the token in Searchable, generate a new one and update the stream’s custom header (no need to recreate the stream)
401 responses are the visible symptom — fix the header and the next batch will succeed.Akamai's Monitor tab shows 4xx responses
Akamai's Monitor tab shows 4xx responses
401 Unauthorized— see the Authorization-header section above.413 Payload Too Large— the batch exceeded Searchable’s 5 MB payload cap. This is rare on default frequency settings (30s / 60s); if you see it, lower the upload interval rather than raising file sizes.
Akamai's Monitor shows successful 204 responses but no events appear in Searchable
Akamai's Monitor shows successful 204 responses but no events appear in Searchable
reqID,reqMethod,reqHost,reqPath,UA,statusCode,cliIP,reqEndTimeMSec
reqID uses a capital ID. Missing any one of these causes every record in the batch to be dropped on the way in.If all required fields are present, the next most common cause is a domain mismatch — see “Status stays on ‘Waiting for first event’” below.Events look deduplicated incorrectly (many requests collapse to one row)
Events look deduplicated incorrectly (many requests collapse to one row)
reqID is populated with a non-unique value, or reqID was omitted from the field selection altogether.- Open the stream’s Data sets step and confirm
reqID(capitalID) is selected — Akamai’s UI lists it alphabetically near the bottom of the request-section fields reqIDis Akamai’s per-request unique identifier and is auto-populated; no property-level VCL or PMUSER variables required- If
reqIDis selected and you still see this symptom, contact support and include a few sample records — most often this turns out to be a property-level override blanking the value
reqID, Searchable falls back to a (timestamp, path, user-agent) heuristic that’s much coarser. The fix is non-destructive — add reqID and republish.Timestamps look wrong (events appear in 1970, or far in the future)
Timestamps look wrong (events appear in 1970, or far in the future)
reqEndTimeMSec — milliseconds since the Unix epoch. Some legacy stream configurations use reqTimeSec (seconds) by mistake.Searchable handles this defensively: if the value looks like seconds (below ~year-2001-in-ms), we scale it up to milliseconds before storage. So you shouldn’t see this in practice — but if you’ve copied a stream config from a much older DataStream 1 export, double-check that the field is reqEndTimeMSec and not reqTimeSec.Status stays on 'Waiting for first event' for more than 24 hours
Status stays on 'Waiting for first event' for more than 24 hours
- The stream isn’t activated — open the stream in Control Center and confirm the status badge reads Active, not Inactive or Pending activation. Activations on Production take 5–10 minutes
- Your domain in Searchable doesn’t match the host the Akamai property serves (check LLM Analytics → Setup → Confirm your domain)
- The Akamai property fronts a different host than the one you’re testing with — DataStream is scoped per-property, so traffic going through a different property won’t appear
- No AI bot has visited yet — try visiting your site with a known AI user agent (e.g.
Mozilla/5.0 (compatible; GPTBot/1.0)) to trigger a test event
204 responses but Searchable still says no events, the issue is almost always a domain mismatch on the Searchable side.I want to test the stream against staging before flipping production
I want to test the stream against staging before flipping production
<your-host>.edgesuite-staging.net or via a Pragma: akamai-x-cache-on header trick from your origin). Successful staging delivery is a strong signal the production activation will work as well.You’ll see events arrive in the same Searchable project — there’s no separate staging endpoint to worry about.Removing the integration
To stop sending traffic to Searchable:- Akamai → CDN → DataStream → your stream → Deactivate (and optionally delete the stream once it’s deactivated)
- Searchable → LLM Analytics → Setup → Tokens → revoke the token
401, which Akamai will retry and then drop).