llms.txt Auditor & AI Crawler Policy Checker avatar

llms.txt Auditor & AI Crawler Policy Checker

Pricing

from $8.50 / 1,000 complete domain audits

Go to Apify Store
llms.txt Auditor & AI Crawler Policy Checker

llms.txt Auditor & AI Crawler Policy Checker

Audit public llms.txt, llms-full.txt, and root robots.txt rules for nine named AI crawlers. Get evidence-backed presence, policy, confidence, gaps, and review actions for each complete domain audit.

Pricing

from $8.50 / 1,000 complete domain audits

Rating

0.0

(0)

Developer

Tim Zinin

Tim Zinin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Categories

Share

llms.txt Auditor — AI Crawler Policy Evidence

Audit public llms.txt, llms-full.txt, and root robots.txt policy for nine curated AI crawlers, with live evidence, explicit missing-versus-unreachable semantics, and safe remediation routing.

This guide is written for buyers, operators, analysts, and automation builders. It explains what the Actor observes, how to turn the Dataset into a controlled workflow, and where human verification remains mandatory.

LLMS.txt & AI Crawler Policy Auditor: buyer input to evidence-backed action

What you get

  • One bounded audit row per normalized public origin covering /llms.txt, /llms-full.txt, and /robots.txt.
  • Explicit missing-versus-unreachable semantics: HTTP 404/410 is observed absence, while timeout, DNS, access denial, rate limit, truncation, or server failure is incomplete evidence.
  • Root-level blocked, allowed, or unspecified policy for GPTBot, ChatGPT-User, ClaudeBot, anthropic-ai, Google-Extended, PerplexityBot, CCBot, Bytespider, and Amazonbot.
  • Stable website identity, freshness, confidence basis and risks, source evidence, gaps, bounded remediation, failure diagnostics, and billing semantics.
  • KVS OUTPUT reconciliation for normalized inputs, successful and failed audits, paid/free/withheld delivery, budget stop, fatal error, and replay safety.

The Actor is pay-per-event. The automatic run-start event and each successfully delivered complete domain audit follow the live Apify pricing panel. Invalid or incomplete audit outcomes are free while the Dataset event remains configured at zero. Current live pricing is authoritative.

The decision this product supports

Does each submitted public domain expose a valid non-empty llms.txt file, and what root robots.txt policy is explicitly observed for the curated AI crawler set?

The Actor reduces collection and first-pass triage work. It does not remove responsibility for source verification or authorize an external business action. The commercial value comes from a structured, repeatable evidence layer: stable identity, observation time, source evidence, confidence, gaps, recommended action, and failure semantics travel with the raw facts.

Who uses it

UserValue
Small-business website ownersCheck whether AI-readable documentation and crawler policy are visible without reading policy files manually.
SEO and GEO agenciesAudit a client-approved domain list and deliver a focused llms.txt plus crawler-policy report.
Web studiosIdentify a missing llms.txt publication opportunity and explicit robots-policy questions for human review.
Content operationsMonitor policy files after site releases or infrastructure migrations.
Technical marketersCompare nine named crawler rules while retaining allowed, blocked, and unspecified separately.
Automation buildersExport one decision-ready row per domain into a remediation or monitoring queue.

Input contract

Input fieldHow to use it
itemsRequired list of up to 100 public domains. Each domain triggers bounded llms.txt, llms-full.txt, and robots.txt checks.
maxConcurrencyParallel domain audits from 1 to 50. Start conservatively and increase only after confirming source reliability.
{
"items": [
"apify.com",
"nytimes.com"
],
"maxConcurrency": 10
}

Start with this bounded example, inspect every Dataset field, and only then expand the scope. Input limits are product controls, not inconveniences: they make cost, completeness, and error handling visible.

LLMS.txt & AI Crawler Policy Auditor: evidence-to-action workflow

Field dictionary

Field or groupMeaning
entityId, input, domainStable normalized website identity, original input, and audited origin.
foundWhether the domain-level audit was reachable enough to support a result; a normal llms.txt 404 is still found=true.
hasLlmsTxt, hasLlmsFullTxt, llmsTxtBytesValidity/presence and bounded byte evidence for non-empty non-HTML policy files.
aiCrawlersPer-user-agent root policy: blocked, allowed, or unspecified.
summaryPlain-language llms.txt and blocked-crawler overview.
observedAt, firstSeenAt, lastSeenAt, freshnessLive policy-file observation timing.
confidenceScore, confidenceBand, confidenceBasis, confidenceReasons, confidenceRisksEvidence support and limits for the precise audit statement.
sourceEvidence, dataGaps, negativeSignalsPolicy-file responses and any unspecified crawler or incomplete-response gaps.
recommendedAction, actionPriority, actionReason, safeToAutomateReview, publish, or monitor routing; automatic site modification remains false.
interpretationBoundaryWhat the current policy-file evidence cannot establish about crawler or AI behavior.
partial, failureType, retryable, failureDiagnosticsInvalid-input, incomplete-source, and budget recovery semantics.
billingWhether the row is billable, its linked event, and the delivered audit unit.

Common decision fields

FieldOperational meaning
recordTypeThe semantic row family. Use it to distinguish a business result from an advisory or terminal record.
schemaVersionVersion of the additive decision-intelligence contract. Pin or validate it in strict consumers.
entityIdStable entity identity for deduplication and joins. It is not necessarily a legal identifier.
inputRefThe relevant submitted input reference after normalization.
observedAtWhen the Actor observed or finalized the evidence. It is not necessarily the source publication time.
firstSeenAt and lastSeenAtAlways-emitted observation boundaries. Stateful monitors use the compatible baseline/current boundary. Stateless rows set both equal to observedAt for the current run; that equality does not establish historical tenure.
freshnessA structured statement about evidence age or availability, not a prediction. Its basis and age unit follow the source-specific field definition.
eventIdFor monitors, the stable identity of one observed transition or monitor outcome. It is distinct from entityId.
before and afterFor monitors, the bounded comparable snapshots used for the decision. Null means that side of a comparison was not honestly available.
changedFields and changeFlagsMachine-readable monitor deltas and normalized change labels. Empty arrays mean no supported changed field was established, not that every possible real-world fact stayed constant.
materialityScore and materialityBandMagnitude of an observed monitor change when the Actor can calculate it. Materiality is separate from evidence confidence and may be unknown when the source lacks the required facts.
confidenceScoreEvidence support on a 0–100 scale. It is separate from materiality, lead score, or business value.
confidenceBandReadable high/medium/low/unknown grouping of evidence support.
confidenceReasonsObserved facts that raise confidence.
confidenceRisksMissing, partial, ambiguous, inferred, or conflicting aspects that reduce confidence.
confidenceConflictExplicit consistency warning when structured evidence does not reconcile.
sourceEvidenceSource-linked observations supporting the row. Preserve this during export.
dataGapsImportant evidence the Actor did not observe or cannot establish. Keep these gaps visible in CRM, spreadsheet, and automation exports.
negativeSignalsMachine-readable risks or gaps. A negative signal is not automatically a negative business outcome.
recommendedActionBounded review label produced from the available evidence.
actionPrioritySuggested queue priority, not urgency guaranteed by the source.
actionReasonPlain-language explanation for the recommended action.
safeToAutomateWhether the narrow recommended action is deterministic enough for automation. Organizational policy still applies.
failureTypeNormalized terminal or partial failure classification. Null means no classified failure.
retryableWhether a later retry may legitimately change an operationally incomplete result.
recommendationHuman-readable handling guidance, especially for terminal rows.

Dataset and KVS OUTPUT

The Dataset contains complete paid audit rows and free invalid/incomplete/budget outcomes. Case- and path-variant inputs that normalize to the same origin are merged before work; each unique origin can generate at most one delivered domain row in a run.

Read KVS OUTPUT before processing the Dataset:

Field or groupMeaning
input.requestedCount / uniqueCount / duplicateCount / invalidCountRaw scope, normalized origins, merged duplicates, and blank values.
attemptedCount / unattemptedCountDomain audits started versus scope left untouched.
successfulCount / failedCountComplete delivered audits versus invalid or incomplete audits.
deliveredRowCount / paidRowCount / localNonMonetizedRowCount / freeRowCountLinked delivery and billing counts.
withheldRowCount / budgetStoppedSuccessfully discovered audit rows not delivered because the effective charge boundary stopped work. Untouched origins are counted only in unattemptedCount; ambiguous linked deliveries are counted only in ambiguousDeliveryCount.
sourceFailureCount / invalidInputCountOperational source failures kept separate from deterministic invalid input.
fatalError / ambiguousDeliveryCount / replaySafeFatal accounting truth and whether a blind retry risks duplicating an uncertain delivery.

replaySafe=true means no linked push/charge receipt was ambiguous in that terminal run. It does not make an intentional rerun free or make downstream writes idempotent; retain the run ID and key the destination on entityId.

Evidence, confidence, and honest boundaries

What the evidence supports

  • The Actor fetches exactly the normalized origin policy paths for llms.txt, llms-full.txt, and robots.txt.
  • A valid llms file must be non-empty and not an HTML error page; a mere HTTP success is insufficient.
  • The curated crawler set contains GPTBot, ChatGPT-User, ClaudeBot, anthropic-ai, Google-Extended, PerplexityBot, CCBot, Bytespider, and Amazonbot.
  • Exact crawler groups override wildcard groups, repeated exact groups are combined, and explicit root disallow/allow rules determine the reported root policy.
  • Private, loopback, metadata, and other non-public targets are refused, including after redirect resolution.

What this Actor never claims

  • The Actor does not validate llms.txt content against a legally binding or universally adopted specification.
  • It does not prove that an AI provider actually crawled, indexed, trained on, cited, or obeyed the website.
  • allowed or unspecified robots policy does not guarantee access through firewalls, bot protection, authentication, or other controls.
  • It does not audit crawler paths beyond the documented root-policy interpretation or bots outside the curated nine.
  • It does not modify policy files, provide legal advice, or guarantee search or AI visibility.

Reading data gaps correctly

A data gap is part of the result. Nulls, partial flags, confidence risks, source failures, and unavailable fields must survive export. Removing these fields makes the remaining facts look more complete than they are. When two sources conflict or a required identity cannot be proven, lower confidence and keep safeToAutomate=false.

Source evidence is not permission

A public source proves only that a value or statement was observable at the recorded time and URL. It does not establish consent, contractual rights, legal status, accuracy after observation, or authorization for a downstream action. Your organization remains responsible for source terms, privacy rules, outreach policy, retention, and human review.

Decision policy and action routing

ActionHow to use it
REVIEW_AND_PUBLISH_LLMS_TXTReview site documentation goals and the emerging convention, then author and publish an appropriate file through an authorized website workflow.
REVIEW_AI_CRAWLER_POLICYConfirm the observed robots rules match the organization's intentional policy before editing them.
MONITOR_POLICY_FILESKeep the completed observation and schedule another audit after meaningful site or policy changes.
RETRY_SOURCE_AUDITRetry only an incomplete public-source audit; correct invalid inputs rather than looping.

Confidence is not attractiveness

confidenceScore answers “how strongly does the available evidence support this factual classification?” It does not answer “how valuable is this lead, property, account, or address?” A high-confidence negative fact may be commercially uninteresting; a low-confidence positive signal may deserve research but not action. Keep the concepts separate in dashboards, exports, and CRM fields.

Why safeToAutomate is conservative

safeToAutomate is intentionally false whenever the next step could amplify an uncertain inference. It may be true only for narrow deterministic actions explicitly supported by the row, such as suppressing an email with invalid syntax. A true value does not waive legal, privacy, consent, contractual, or organizational rules.

Retry policy

  • Retry when retryable=true and the failure is operational, such as a temporary source or DNS problem.
  • Do not endlessly retry deterministic invalid input, policy refusal, or confirmed absence.
  • A retry must preserve the original input reference and must not create duplicate downstream actions.
  • Budget exhaustion is not negative evidence about the entity. Resume only the unprocessed scope with an authorized budget.
  • A failed Actor run is an operational event. Never transform it into “no listing,” “no contact,” “bad lead,” or “invalid email.”

Commercial use-case playbooks

1. Agency client audit

Goal. Submit approved domains, deliver presence, bytes, per-bot policy, evidence confidence, and direct remediation questions.

Recommended runbook.

  1. Define the submitted cohort and write down why it is in scope.
  2. Start with the smallest useful Input and preserve the exact run ID.
  3. Inspect the Dataset overview before exporting anything.
  4. Check failureType, retryable, completeness indicators, and confidenceBand.
  5. Open the relevant sourceEvidence or source URL for material rows.
  6. Apply the recommended action as a review label, not as an instruction to contact, buy, delete, accuse, or publish.
  7. Record the analyst's final disposition in the destination system.

Do not skip. A found row proves the stated policy-file presence and root robots.txt interpretation at observation time. It does not prove crawler behavior, indexing, AI citation, compliance, adoption, visibility, or business impact.

2. Website launch checklist

Goal. Check llms.txt and robots policy after deployment and manually inspect the published file content.

Recommended runbook.

  1. Define the submitted cohort and write down why it is in scope.
  2. Start with the smallest useful Input and preserve the exact run ID.
  3. Inspect the Dataset overview before exporting anything.
  4. Check failureType, retryable, completeness indicators, and confidenceBand.
  5. Open the relevant sourceEvidence or source URL for material rows.
  6. Apply the recommended action as a review label, not as an instruction to contact, buy, delete, accuse, or publish.
  7. Record the analyst's final disposition in the destination system.

Do not skip. A found row proves the stated policy-file presence and root robots.txt interpretation at observation time. It does not prove crawler behavior, indexing, AI citation, compliance, adoption, visibility, or business impact.

3. AI crawler policy review

Goal. Compare named bot states with the approved organization policy; keep unspecified distinct from allowed.

Recommended runbook.

  1. Define the submitted cohort and write down why it is in scope.
  2. Start with the smallest useful Input and preserve the exact run ID.
  3. Inspect the Dataset overview before exporting anything.
  4. Check failureType, retryable, completeness indicators, and confidenceBand.
  5. Open the relevant sourceEvidence or source URL for material rows.
  6. Apply the recommended action as a review label, not as an instruction to contact, buy, delete, accuse, or publish.
  7. Record the analyst's final disposition in the destination system.

Do not skip. A found row proves the stated policy-file presence and root robots.txt interpretation at observation time. It does not prove crawler behavior, indexing, AI citation, compliance, adoption, visibility, or business impact.

4. GEO documentation project

Goal. Use missing llms.txt as a project prompt, not proof that current content is invisible to AI systems.

Recommended runbook.

  1. Define the submitted cohort and write down why it is in scope.
  2. Start with the smallest useful Input and preserve the exact run ID.
  3. Inspect the Dataset overview before exporting anything.
  4. Check failureType, retryable, completeness indicators, and confidenceBand.
  5. Open the relevant sourceEvidence or source URL for material rows.
  6. Apply the recommended action as a review label, not as an instruction to contact, buy, delete, accuse, or publish.
  7. Record the analyst's final disposition in the destination system.

Do not skip. A found row proves the stated policy-file presence and root robots.txt interpretation at observation time. It does not prove crawler behavior, indexing, AI citation, compliance, adoption, visibility, or business impact.

5. Portfolio monitoring

Goal. Schedule a bounded domain list and alert only on independently computed changes in your downstream state layer.

Recommended runbook.

  1. Define the submitted cohort and write down why it is in scope.
  2. Start with the smallest useful Input and preserve the exact run ID.
  3. Inspect the Dataset overview before exporting anything.
  4. Check failureType, retryable, completeness indicators, and confidenceBand.
  5. Open the relevant sourceEvidence or source URL for material rows.
  6. Apply the recommended action as a review label, not as an instruction to contact, buy, delete, accuse, or publish.
  7. Record the analyst's final disposition in the destination system.

Do not skip. A found row proves the stated policy-file presence and root robots.txt interpretation at observation time. It does not prove crawler behavior, indexing, AI citation, compliance, adoption, visibility, or business impact.

6. CMS migration verification

Goal. Audit before and after a migration and confirm redirects did not expose internal or unintended policy targets.

Recommended runbook.

  1. Define the submitted cohort and write down why it is in scope.
  2. Start with the smallest useful Input and preserve the exact run ID.
  3. Inspect the Dataset overview before exporting anything.
  4. Check failureType, retryable, completeness indicators, and confidenceBand.
  5. Open the relevant sourceEvidence or source URL for material rows.
  6. Apply the recommended action as a review label, not as an instruction to contact, buy, delete, accuse, or publish.
  7. Record the analyst's final disposition in the destination system.

Do not skip. A found row proves the stated policy-file presence and root robots.txt interpretation at observation time. It does not prove crawler behavior, indexing, AI citation, compliance, adoption, visibility, or business impact.

7. Client report enrichment

Goal. Join entityId with existing website records and preserve source evidence and observation time.

Recommended runbook.

  1. Define the submitted cohort and write down why it is in scope.
  2. Start with the smallest useful Input and preserve the exact run ID.
  3. Inspect the Dataset overview before exporting anything.
  4. Check failureType, retryable, completeness indicators, and confidenceBand.
  5. Open the relevant sourceEvidence or source URL for material rows.
  6. Apply the recommended action as a review label, not as an instruction to contact, buy, delete, accuse, or publish.
  7. Record the analyst's final disposition in the destination system.

Do not skip. A found row proves the stated policy-file presence and root robots.txt interpretation at observation time. It does not prove crawler behavior, indexing, AI citation, compliance, adoption, visibility, or business impact.

8. Failure exception queue

Goal. Separate invalid domain, unreachable origin, and policy absence so technical failures never become false remediation claims.

Recommended runbook.

  1. Define the submitted cohort and write down why it is in scope.
  2. Start with the smallest useful Input and preserve the exact run ID.
  3. Inspect the Dataset overview before exporting anything.
  4. Check failureType, retryable, completeness indicators, and confidenceBand.
  5. Open the relevant sourceEvidence or source URL for material rows.
  6. Apply the recommended action as a review label, not as an instruction to contact, buy, delete, accuse, or publish.
  7. Record the analyst's final disposition in the destination system.

Do not skip. A found row proves the stated policy-file presence and root robots.txt interpretation at observation time. It does not prove crawler behavior, indexing, AI citation, compliance, adoption, visibility, or business impact.

Integration recipes

All examples use placeholders. Keep the Apify token in a secret manager and never write it into a Dataset, README, screenshot, or client-side application.

cURL: start a run and wait briefly

curl -sS -X POST 'https://api.apify.com/v2/acts/zinin~llms-txt-auditor/runs?waitForFinish=60' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"items":["apify.com","nytimes.com"],"maxConcurrency":10}'

The run response includes defaultDatasetId. Read clean JSON rows with:

curl -sS "https://api.apify.com/v2/datasets/$DEFAULT_DATASET_ID/items?clean=true&format=json" \
-H "Authorization: Bearer $APIFY_TOKEN"

JavaScript with apify-client

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
"items": [
"apify.com",
"nytimes.com"
],
"maxConcurrency": 10
};
const run = await client.actor('zinin/llms-txt-auditor').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems({ clean: true });
for (const row of items) {
console.log({
entityId: row.entityId,
confidenceBand: row.confidenceBand,
recommendedAction: row.recommendedAction,
safeToAutomate: row.safeToAutomate,
failureType: row.failureType,
});
}

Python with apify-client

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("zinin/llms-txt-auditor").call(run_input={
"items": [
"apify.com",
"nytimes.com"
],
"maxConcurrency": 10
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items(clean=True):
print({
"entityId": row.get("entityId"),
"confidenceBand": row.get("confidenceBand"),
"recommendedAction": row.get("recommendedAction"),
"safeToAutomate": row.get("safeToAutomate"),
"failureType": row.get("failureType"),
})

Apify MCP call

{
"name": "call-actor",
"arguments": {
"actor": "zinin/llms-txt-auditor",
"input": {
"items": [
"apify.com",
"nytimes.com"
],
"maxConcurrency": 10
}
}
}

Generic webhook consumer policy

  1. Trigger on a terminal Actor run event.
  2. Confirm the run status is SUCCEEDED before reading business rows.
  3. Retrieve rows from defaultDatasetId.
  4. Retrieve KVS OUTPUT and require an accepted terminal status and replay policy.
  5. Reject or quarantine rows whose failureType is non-null unless your policy explicitly handles that failure.
  6. Send safeToAutomate=false rows to a human-review queue.
  7. Store entityId, observedAt, sourceEvidence, confidence, action, and the Apify run ID together.
  8. Make retries idempotent by keying the destination on the stable entity ID plus the intended observation identity.

Where this fits in a practical stack

DestinationRecommended pattern
Apify ConsoleUse the visual Input form, start the run, then open the default Dataset overview. This is the fastest path for a one-off review and the best place to inspect evidence before automating anything.
Apify APIPOST JSON input to the Actor run endpoint, wait or poll for completion, then read the default Dataset through the URL returned by the run object.
JavaScript clientUse apify-client from a Node.js service, pass the same JSON object as the Console Input, and preserve the returned run and Dataset IDs in your own audit log.
Python clientUse apify-client in a Python enrichment job, iterate Dataset items, and route rows by recommendedAction, confidenceBand, failureType, and retryable.
MakeStart the Actor from a scenario, wait for the run, retrieve Dataset items, filter unsafe or low-confidence rows, then insert review-ready rows into the destination application.
ZapierUse an Apify run action or webhook trigger, fetch Dataset items, apply a Filter step, and send only review-approved fields into the next sales or operations step.
n8nUse HTTP Request or Apify nodes, branch on failureType and retryable, keep a manual-review lane for safeToAutomate=false, and write sourceEvidence together with the business fields.
Google SheetsExport the Dataset directly or append rows from an automation. Keep stable entityId as a hidden key so reruns update the correct record instead of creating ambiguous duplicates.
AirtableMap entityId to a primary or deduplication field, store confidence and evidence in separate columns, and expose recommendedAction as the triage view.
WebhookConfigure an Apify webhook for terminal run states, retrieve the Dataset after SUCCEEDED, and treat FAILED or TIMED-OUT runs as operational events rather than negative business evidence.

A safe automation shape

The Actor is a collection and decision-support component. A production workflow should keep raw evidence, decision metadata, and business action in distinct layers:

  1. Collect: run the Actor with explicit bounded input.
  2. Validate: require a successful run and schema-valid Dataset rows.
  3. Triage: branch on failureType, retryable, confidenceBand, and safeToAutomate.
  4. Review: open source evidence for rows that may affect a person, campaign, investment, compliance decision, or customer record.
  5. Act: execute only the action approved by your own policy and authorized operator.
  6. Audit: retain run ID, Dataset ID, observation time, input reference, source evidence, and the final human decision.

This separation prevents a common automation error: turning “data was observed” into “a business action is justified.”

Operating guide

Before the first production run

  1. Write the business question in one sentence: Does each submitted public domain expose a valid non-empty llms.txt file, and what root robots.txt policy is explicitly observed for the curated AI crawler set?
  2. Confirm every submitted input is within your authorized scope.
  3. Use the prefilled small example and review all returned row types.
  4. Map stable identifiers, confidence, evidence, actions, gaps, failure, and retry fields into the destination.
  5. Establish a human owner for review exceptions.
  6. Set a run budget and output bound appropriate to the test.
  7. Verify that secrets are stored only in the platform or workflow secret manager.

After every scheduled run

  1. Check terminal run status and logs.
  2. Compare the number of submitted entities, produced business rows, and advisory rows.
  3. Review partial, unknown, conflict, and low-confidence buckets.
  4. Inspect a sample of source evidence, including at least one positive and one negative result.
  5. Confirm the destination deduplicated on the intended stable key.
  6. Verify that no downstream action was triggered from an error row.
  7. Track cost per useful reviewed row rather than cost per raw request alone.

Production monitoring signals

Monitor source-unavailable rate, partial-row rate, low-confidence share, missing evidence, retry volume, run duration, Dataset row count, and spend. A sudden shift may indicate source drift, input drift, or an upstream outage. Stop automation and investigate before accepting a new pattern as business truth.

Cost control

Start with two domains that have different expected policies. Inspect the three source responses and per-bot states, then increase concurrency and batch size. Verify current result pricing in the live Apify panel.

Use maxTotalChargeUsd when calling a monetized Actor if your workflow supports it. Treat a buyer-set cap as a hard safety boundary. If the cap stops work, the unfinished items remain unprocessed; they do not become negative results.

Buyer and operator acceptance checklist

Use this checklist before calling the workflow production-ready.

Product fit

  • The business question matches: Does each submitted public domain expose a valid non-empty llms.txt file, and what root robots.txt policy is explicitly observed for the curated AI crawler set?
  • The submitted entities were selected through an authorized process.
  • A human owner understands the positive, negative, partial, and failure row types.
  • The team accepts the boundaries listed in “What this Actor never claims.”
  • The destination keeps evidence confidence separate from business scoring.

Input and run controls

  • items is explicitly reviewed and bounded.
  • maxConcurrency is explicitly reviewed and bounded.
  • The first production-like run uses a small representative sample.
  • A maximum charge or internal spend alert is configured where appropriate.
  • The workflow records Actor ID, build/version, run ID, Dataset ID, and input hash.

Data handling

  • entityId is mapped to an idempotent destination key.
  • observedAt and source-specific time fields remain distinct.
  • sourceEvidence, gaps, and nulls are preserved.
  • Advisory and failure rows cannot enter the positive-results lane.
  • Low-confidence and partial rows have a visible manual-review view.
  • Retention and deletion rules match the type of data collected.

Action safety

  • recommendedAction is treated as a review label.
  • safeToAutomate=false blocks automatic external action.
  • Consent, suppression, legal, contractual, and platform rules are evaluated downstream.
  • A reviewer can trace a material action back to source evidence and run metadata.
  • Retry logic cannot duplicate a downstream action.

Ongoing quality

  • The team monitors failure, retry, partial, low-confidence, and empty-result rates.
  • A source-drift threshold pauses the workflow for inspection.
  • Sample evidence is manually reviewed on a recurring basis.
  • Cost per useful reviewed row is measured.
  • Documentation and field mappings are updated when schemaVersion changes.

Frequently asked questions

Is this a database?

No. It is an on-demand observation tool. Each run collects or evaluates the submitted scope and records evidence at that time.

Does a found row prove commercial interest?

No. A found row proves only the factual observation described by its fields. Buyer intent is never inferred.

Can I automatically contact every result?

No. Use recommendedAction as triage, verify the evidence and identity, and apply your own consent, privacy, suppression, and outreach rules.

Why is safeToAutomate often false?

Because a useful observation can still require identity, context, legal, or source verification before action. Conservative routing prevents false certainty from scaling.

What should I do with low confidence?

Open confidenceRisks and sourceEvidence, close the important gap, or keep the row in a manual queue. Do not hide the confidence field.

What does partial mean?

The Actor obtained some usable evidence but could not support a complete observation of the configured scope. Partial is not the same as empty.

What is a confirmed zero?

Only an explicit source or deterministic rule can support a confirmed absence. An outage, truncation, or unreadable response is not a zero.

Should I retry every failure?

No. Retry only when retryable is true. Invalid input, policy refusal, or deterministic classification should be corrected or handled, not looped.

Can I delete failure rows?

You can exclude them from a business-results view, but retain them in operational logs so Dataset completeness and retry decisions stay explainable.

How should I deduplicate?

The Actor merges submitted values that normalize to the same origin. Downstream, use entityId for the website and retain the Apify run ID so a repeated audit cannot create an accidental second remediation ticket.

Can I treat confidence as conversion probability?

No. Confidence measures evidence support, not purchase probability, revenue, suitability, or expected return.

Yes. It is an explainable default. Your downstream policy can be stricter, and should encode organization-specific authorization and risk tolerance.

How do I estimate cost?

Run the smallest representative input, inspect live event prices and run usage in Apify, then model the number of billable result events. The live pricing panel is authoritative.

Why use a small prefill?

It produces a cheap, fast, inspectable first run and reduces the chance of scaling a wrong input or workflow assumption.

Can I schedule it?

Yes. Use an Apify schedule, but make the destination idempotent and review changes in failure, partial, and confidence rates.

Can I export CSV or Excel?

Yes. Apify Datasets support common export formats. JSON is recommended when you need nested evidence and decision fields.

Can I send results to Sheets or Airtable?

Yes. Preserve entityId, confidence, evidence, gaps, actions, and failure fields instead of mapping only the headline value.

Can I use it from Make, Zapier, or n8n?

Yes. Start the Actor, wait for a successful terminal state, read Dataset items, then branch on decision and failure fields.

Can an LLM consume the output?

Yes, but pass the structured evidence and limitations together. Instruct the model not to invent missing facts and to cite sourceEvidence.

What happens when a source changes?

The run may become partial, unavailable, or fail validation. Monitor these rates and inspect logs before treating changed output as a real-world shift.

Does public mean unrestricted?

No. Public visibility does not remove source terms, privacy obligations, retention rules, or the need for a legitimate downstream purpose.

Is a source URL permanent?

Not necessarily. Store observation time and material facts because web content can change or disappear.

Can I rely on one row for a high-stakes decision?

No. High-stakes legal, financial, employment, compliance, safety, or personal decisions require appropriate primary evidence and qualified review.

How do I report a suspected parsing issue?

Provide the Actor run ID, a redacted input, affected field, expected source evidence, and whether the issue reproduces. Never include tokens or private data.

What does success mean?

A found row proves the stated policy-file presence and root robots.txt interpretation at observation time. It does not prove crawler behavior, indexing, AI citation, compliance, adoption, visibility, or business impact.

Support information to include with an issue

Provide the public Actor name, Apify run ID, Dataset item index or stable entity ID, a redacted Input, the relevant source URL, expected behavior, observed behavior, and whether retrying produced the same result. Do not include an Apify token, API key, private customer record, or unnecessary personal data.

ActorUse it after or alongside this Actor
AI Crawler Access CheckerRun a broader robots.txt crawler matrix when the narrow llms.txt-first audit identifies a policy question.
Sitemap to KnowledgeTurn a buyer-authorized sitemap into bounded content inventory for documentation workflows.
Website SEO AuditorAdd conventional technical SEO evidence without treating it as proof of AI visibility.
AI Overview TrackerObserve bounded answer/citation evidence separately; policy-file availability does not predict inclusion.
LLM Brand VisibilityMeasure supported answer evidence with its own provider and cost boundary; do not infer it from robots.txt.

Final interpretation rule

A found row proves the stated policy-file presence and root robots.txt interpretation at observation time. It does not prove crawler behavior, indexing, AI citation, compliance, adoption, visibility, or business impact.