Skip to content

Technical reference

Node configuration schemas

Generated field types, defaults, and declared constraints for the workflow engine.

Generated from crawler-core/app/api/contracts.py. Regenerate with python3 scripts/generate-reference.py from the documentation repository with sibling backend checkouts.

These are engine config fields, not complete canvas payloads. Use them inside a node’s data in the product API. Resource ids are resolved by crawler-api; store and blob_store are internal injected connections. Never place connection secrets in a saved canvas.

Required means no declared default; None means omitted/null by default. Runtime graph validation also enforces cross-field rules: consult the node guide and validate before running. Model names refer to the option sections below; Python Literal values are the allowed enum values.

FieldType / allowed valuesDefaultConstraints
urlstr | NoneNone—
urlslist[str] | NoneNonemin_length: 1
url_sourceLiteral[‘config’, ‘query_result’, ‘records’]'config'—
url_fieldstr | NoneNone—
carrylist[str] | NoneNonemin_length: 1
depthAnnotated[int, Field(ge=0)] | Literal[‘unlimited’] | None0—
max_pagesint30gt: 0
css_selectorstr | NoneNone—
target_elementslist[str] | str | NoneNone—
word_count_thresholdint | NoneNonege: 0
excluded_tagslist[str] | str | NoneNone—
exclude_external_linksbool | NoneNone—
exclude_social_media_linksbool | NoneNone—
exclude_domainslist[str] | str | NoneNone—
exclude_social_media_domainslist[str] | str | NoneNone—
exclude_external_imagesbool | NoneNone—
process_iframesbool | NoneNone—
remove_overlay_elementsbool | NoneNone—
remove_consent_popupsbool | NoneNone—
flatten_shadow_dombool | NoneNone—
remove_formsbool | NoneNone—
keep_data_attributesbool | NoneNone—
only_textbool | NoneNone—
excluded_selectorstr | NoneNone—
table_score_thresholdfloat | NoneNonege: 0
js_codestr | list[str] | NoneNone—
js_code_before_waitstr | list[str] | NoneNone—
js_onlybool | NoneNone—
session_idstr | NoneNone—
kill_sessionbool | NoneNone—
wait_forstr | NoneNone—
wait_untilLiteral[‘commit’, ‘domcontentloaded’, ‘load’, ‘networkidle’] | NoneNone—
page_timeoutint | NoneNonege: 1000; le: 600000
delay_before_return_htmlfloat | NoneNonege: 0; le: 60
mean_delayfloat | NoneNonege: 0; le: 60
max_rangefloat | NoneNonege: 0; le: 60
cache_modeLiteral[‘enabled’, ‘bypass’, ‘disabled’, ‘read_only’, ‘write_only’] | NoneNone—
simulate_userbool | NoneNone—
override_navigatorbool | NoneNone—
magicbool | NoneNone—
virtual_scroll_configVirtualScrollOptions | NoneNone—
scan_full_pagebool | NoneNone—
scroll_delayfloat | NoneNonege: 0; le: 10.0
max_scroll_stepsint | NoneNonege: 1; le: 500
wait_for_imagesbool | NoneNone—
viewport_widthint | NoneNonege: 320; le: 3840
viewport_heightint | NoneNonege: 240; le: 2160
device_scale_factorfloat | NoneNonege: 0.5; le: 4.0
localestr | NoneNone—
timezone_idstr | NoneNone—
geolocationGeolocationOptions | NoneNone—
text_modebool | NoneNone—
light_modebool | NoneNone—
avoid_adsbool | NoneNone—
avoid_cssbool | NoneNone—
dispatcherDispatcherOptions | Literal[‘memory_adaptive’, ‘semaphore’] | NoneNone—
rate_limiterRateLimiterOptions | NoneNone—
monitorMonitorOptions | bool | NoneNone—
streambool | NoneNone—
check_robots_txtbool | NoneNone—
url_configslist[UrlConfigOverride] | NoneNone—
url_seedingUrlSeedingOptions | NoneNone—
domain_mappingDomainMappingOptions | NoneNone—
deep_crawlDeepCrawlOptions | NoneNone—
adaptive_crawlAdaptiveCrawlOptions | NoneNone—
prefetchbool | NoneNone—
screenshotbool | NoneNone—
screenshot_full_pagebool | NoneNone—
force_viewport_screenshotbool | NoneNone—
screenshot_wait_forfloat | NoneNonege: 0; le: 60.0
pdfbool | NoneNone—
capture_mhtmlbool | NoneNone—
capture_network_requestsbool | NoneNone—
capture_console_messagesbool | NoneNone—
fetch_ssl_certificatebool | NoneNone—
accept_downloadsbool | NoneNone—
verbosebool | NoneNone—
concurrencyint | NoneNone—
delay_msint | NoneNone—
browserbool | str | NoneNone—
cookieslist[dict[str, Any]] | dict[str, Any] | NoneNone—
user_agentstr | NoneNone—
auto_browser_fallbackbool | NoneNone—
retry_countint | NoneNone—
retry_backoff_msint | NoneNone—
request_timeout_msint | NoneNone—
browser_wait_msint | NoneNone—
captcha_modestr | NoneNone—
challenge_wait_secondsfloat | NoneNone—
headlessbool | NoneNone—
ignore_https_errorsbool | NoneNone—
extra_headersdict[str, str] | NoneNone—
allow_root_cross_domain_redirectbool | NoneNone—
FieldType / allowed valuesDefaultConstraints
content_sourceLiteral[‘raw_html’, ‘cleaned_html’, ‘fit_html’] | NoneNone—
preserve_linksbool | NoneNone—
preserve_tablesbool | NoneNone—
preserve_codebool | NoneNone—
ignore_imagesbool | NoneNone—
escape_htmlbool | NoneNone—
body_widthint | NoneNonege: 0
skip_internal_linksbool | NoneNone—
include_sup_subbool | NoneNone—
citationsbool | NoneNone—
mark_codebool | NoneNone—
handle_code_in_prebool | NoneNone—
optionsMarkdownOptions | NoneNone—
content_filterLiteral[‘none’, ‘pruning’, ‘bm25’, ‘pruning_bm25’, ‘llm’] | NoneNone—
strict_filterbool | NoneNone—
pruning_thresholdfloat | NoneNonege: 0; le: 1
pruning_threshold_typeLiteral[‘fixed’, ‘dynamic’] | NoneNone—
min_word_thresholdint | NoneNonege: 0
user_querystr | NoneNone—
bm25_thresholdfloat | NoneNonege: 0; le: 100
bm25_languagestr | NoneNone—
bm25_case_sensitivebool | NoneNone—
bm25_use_stemmingbool | NoneNone—
bm25_priority_tagslist[str] | NoneNone—
llm_filter_instructionstr | NoneNone—
llm_filter_providerstr | NoneNone—
llm_filter_modelstr | NoneNone—
llm_filter_parallelismint | NoneNonege: 1
chunk_token_thresholdint | NoneNonege: 256
FieldType / allowed valuesDefaultConstraints
enabledboolTrue—
promptstr''—
providerLiteral[‘ollama’, ‘openrouter’, ‘openai_compatible’, ‘openai’, ‘gemini’, ‘anthropic’] | NoneNone—
modelstr | NoneNone—
base_urlstr | NoneNone—
api_keystr | NoneNone—
endpointLiteral[‘platform’, ‘own’] | NoneNone—
temperaturefloat | NoneNonege: 0; le: 2
max_tokensint | NoneNonege: 1; le: 32768
output_formatLiteral[‘json’, ‘text’] | NoneNone—
strict_jsonbool | NoneNone—
schemadict[str, Any] | NoneNone—
relevance_enabledbool | NoneNone—
max_relevant_pagesint | NoneNonegt: 0
max_context_pagesint | NoneNonegt: 0
max_input_charsint | NoneNonegt: 0
context_chunk_charsint | NoneNonege: 500
context_chunk_overlap_charsint | NoneNonege: 0
max_chunks_per_pageint | NoneNonegt: 0
extraction_strategyLiteral[‘css’, ‘xpath’, ‘regex’, ‘cosine’, ‘llm’] | NoneNone—
extraction_typeLiteral[‘schema’, ‘block’]'schema'—
extraction_input_formatLiteral[‘markdown’, ‘raw_markdown’, ‘fit_markdown’, ‘html’, ‘cleaned_html’, ‘raw_html’, ‘fit_html’]'markdown'—
extraction_schemadict[str, Any] | NoneNone—
extraction_output_schemadict[str, Any] | NoneNone—
extraction_instructionstr | NoneNone—
extraction_generate_schemabool | NoneNone—
extraction_validate_generated_schemabool | NoneNone—
extraction_schema_querystr | NoneNone—
extraction_schema_retriesint | NoneNonege: 0; le: 5
extraction_max_schema_samplesint | NoneNonege: 1; le: 16
extraction_strict_schemabool | NoneNone—
extraction_llm_configExtractionLlmOptions | NoneNone—
extraction_extra_argsdict[str, Any] | NoneNone—
extraction_parallelismint | NoneNonege: 1; le: 8
extraction_adaptivebool | NoneNone—
extraction_item_retriesint | NoneNonege: 0; le: 5
extraction_batch_sizeint | NoneNonege: 1; le: 20
extraction_batch_max_charsint | NoneNonege: 1000; le: 200000
extraction_batch_max_wait_secondsfloat | NoneNonege: 0; le: 600
extraction_verbosebool | NoneNone—
extraction_regex_patternslist[str] | str | NoneNone—
extraction_regex_customdict[str, str] | NoneNone—
extraction_generate_patternbool | NoneNone—
extraction_pattern_labelstr | NoneNone—
extraction_pattern_querystr | NoneNone—
extraction_pattern_retriesint | NoneNonege: 0; le: 5
extraction_apply_chunkingbool | NoneNone—
extraction_chunking_strategyLiteral[‘regex’, ‘sentence’, ‘topic’, ‘fixed_words’, ‘sliding_window’, ‘characters’] | NoneNone—
extraction_chunk_patternslist[str] | str | NoneNone—
extraction_chunk_languagestr | NoneNone—
extraction_chunk_token_thresholdint | NoneNonege: 128
extraction_chunk_sizeint | NoneNonege: 1
extraction_chunk_overlapint | NoneNonege: 0
extraction_chunk_stepint | NoneNonege: 1
extraction_overlap_ratefloat | NoneNonege: 0; le: 0.5
extraction_topic_wint | NoneNonege: 5
extraction_topic_kint | NoneNonege: 2
extraction_max_chunksint | NoneNonege: 1; le: 20000
extraction_word_token_ratefloat | NoneNonegt: 0; le: 10
extraction_tokenizerstr'estimate'—
extraction_semantic_filterstr | NoneNone—
extraction_word_count_thresholdint | NoneNonege: 1
extraction_sim_thresholdfloat | NoneNonege: 0; le: 1
extraction_max_distfloat | NoneNonege: 0; le: 2
extraction_linkage_methodLiteral[‘ward’, ‘complete’, ‘average’, ‘single’] | NoneNone—
extraction_top_kint | NoneNonege: 1
extraction_max_cosine_chunksint | NoneNonege: 1; le: 2000
extraction_embedding_modelstr | NoneNone—
extraction_embedding_llm_configExtractionEmbeddingOptions | NoneNone—
extraction_allow_embedding_fallbackbool | NoneNone—

Storage is the platform MongoDB unless crawler-api sets a user store.

FieldType / allowed valuesDefaultConstraints
save_imagesboolFalse—
storeStoreConnection | NoneNone—
blob_storeBlobStoreConnection | NoneNone—

Documents go to the platform MongoDB unless crawler-api sets a user store.

FieldType / allowed valuesDefaultConstraints
keyRecordKeyConfig | NoneNone—
derivelist[DeriveConfig] | NoneNone—
storeStoreConnection | NoneNone—

Exactly one of from_field, from_fields and select names where the files are.

FieldType / allowed valuesDefaultConstraints
from_fieldstr | NoneNone—
from_fieldslist[str] | NoneNone—
selectS3SelectConfig | NoneNone—
asstr | NoneNone—
kindLiteral[‘image’, ‘pdf’, ‘video’, ‘file’]'image'—
max_files_per_itemint1ge: 1; le: 20
max_bytesint10000000ge: 1; le: 100000000
allow_typeslist[str] | NoneNone—
blob_storeBlobStoreConnection | NoneNone—

Runs the inline flow once per record of the connected node.

FieldType / allowed valuesDefaultConstraints
flowdict[str, Any]Required—
entrystrRequired—
binddict[str, str]Required—
concurrencyint4ge: 1; le: 8
max_itemsint500ge: 1; le: 5000
on_errorLiteral[‘continue’, ‘stop’]'continue'—
keystr | NoneNone—
item_timeout_secondsint300ge: 10; le: 3600

Merges the records several branches made for the same thing into one record per key.

FieldType / allowed valuesDefaultConstraints
keystrRequired—
fieldsdict[str, Literal[‘first’, ‘last’, ‘union’, ‘join’]] | NoneNone—
separatorstr'\n\n'—
FieldType / allowed valuesDefaultConstraints
querystr | NoneNone—
promptstr | NoneNone—
collectionLiteral[‘raw_pages’, ‘pages’, ‘llm_results’, ‘records’] | NoneNone—
mongo_filterdict[str, Any] | NoneNone—
limitint | NoneNonege: 1; le: 100
sortlist[tuple[str, Literal[1, -1]]] | NoneNonemin_length: 1; max_length: 2
fieldslist[str] | NoneNonemin_length: 1; max_length: 50
providerstr | NoneNone—
modelstr | NoneNone—
base_urlstr | NoneNone—
api_keystr | NoneNone—
endpointLiteral[‘platform’, ‘own’] | NoneNone—
storeStoreConnection | NoneNone—
source_execution_idUUID | NoneNone—
source_node_idslist[str] | NoneNonemin_length: 1
FieldType / allowed valuesDefaultConstraints
transformer_typeLiteral[‘cssSelector’, ‘htmlParser’, ‘jsonExtractor’, ‘custom’]'cssSelector'—
css_selectorstr | NoneNone—
extract_patternstr | NoneNone—
transformer_configTransformerOptions | NoneNone—
FieldType / allowed valuesDefaultConstraints
columnslist[str] | NoneNone—
rowslist[list[Any]] | NoneNone—
row_countint | NoneNonege: 0
FieldType / allowed valuesDefaultConstraints
chart_typeLiteral[‘bar’, ‘line’, ‘pie’, ‘doughnut’, ‘scatter’]'bar'—
labelslist[str] | NoneNone—
datasetslist[ChartDataset] | NoneNone—
label_fieldstr | NoneNone—
value_fieldstr | NoneNone—
FieldType / allowed valuesDefaultConstraints
textstr | NoneNone—
FieldType / allowed valuesDefaultConstraints
container_selectorstr'body'—
scroll_countint10ge: 1; le: 200
scroll_byLiteral[‘container_height’, ‘page_height’] | Annotated[float, Field(ge=1, le=100000.0)]'container_height'—
wait_after_scrollfloat0.5ge: 0; le: 30.0
FieldType / allowed valuesDefaultConstraints
latitudefloatRequiredge: -90; le: 90
longitudefloatRequiredge: -180; le: 180
accuracyfloat0ge: 0; le: 100000.0
FieldType / allowed valuesDefaultConstraints
typeLiteral[‘memory_adaptive’, ‘semaphore’]'memory_adaptive'—
memory_threshold_percentfloat | NoneNonegt: 0; le: 100
check_intervalfloat | NoneNonegt: 0
max_session_permitint | NoneNonege: 1; le: 200
semaphore_countint | NoneNonege: 1; le: 200
memory_wait_timeoutfloat | NoneNonegt: 0
FieldType / allowed valuesDefaultConstraints
enabledbool | NoneNone—
base_delaylist[float] | NoneNonemin_length: 2; max_length: 2
max_delayfloat | NoneNonege: 0
max_retriesint | NoneNonege: 0; le: 20
rate_limit_codeslist[int] | NoneNonemin_length: 1
FieldType / allowed valuesDefaultConstraints
enabledbool | NoneNone—
max_visible_rowsint | NoneNonege: 1; le: 500
display_modeLiteral[‘detailed’, ‘aggregated’] | NoneNone—
FieldType / allowed valuesDefaultConstraints
url_matcherstr | list[str] | NoneNone—
match_modeLiteral[‘and’, ‘or’]'or'—
configdict[str, Any]{}—
FieldType / allowed valuesDefaultConstraints
enabledboolTrue—
include_rootboolTrue—
fill_linksboolTrue—
sourceLiteral[‘sitemap’, ‘cc’, ‘sitemap+cc’]'sitemap'—
patternstr'*'—
extract_headboolFalse—
live_checkboolFalse—
max_urlsint-1—
concurrencyint10gt: 0
hits_per_secfloat | None5.0ge: 0
forceboolFalse—
verboseboolFalse—
querystr | NoneNone—
scoring_methodLiteral[‘bm25’] | NoneNone—
score_thresholdfloat | NoneNonege: 0
filter_nonsense_urlsboolTrue—
cache_ttl_hoursfloat24.0ge: 0
validate_sitemap_lastmodboolTrue—
common_crawl_indexstr | NoneNone—
max_sitemapsint128gt: 0
head_max_bytesint96000gt: 0
sitemap_max_bytesint50000000gt: 0
FieldType / allowed valuesDefaultConstraints
enabledboolTrue—
include_rootboolTrue—
fill_linksboolTrue—
sourcestr'sitemap+cc+crt+probe'—
max_urlsint-1—
concurrencyint50gt: 0
hits_per_secfloat | None10.0ge: 0
forceboolFalse—
extract_headboolTrue—
filter_nonsense_urlsboolTrue—
detect_soft_404boolTrue—
querystr | NoneNone—
scoring_methodLiteral[‘bm25’] | None'bm25'—
score_thresholdfloat | NoneNonege: 0
patternstr'*'—
probe_pathslist[str] | NoneNone—
common_subdomainslist[str] | NoneNone—
use_browser_for_homepageboolFalse—
verboseboolFalse—
cache_ttl_hoursfloat24.0ge: 0
dns_timeoutfloat3.0ge: 0
http_timeoutfloat10.0ge: 0
common_crawl_indexstr | NoneNone—
max_hostsint200gt: 0
max_sitemapsint128gt: 0
head_max_bytesint96000gt: 0
FieldType / allowed valuesDefaultConstraints
typeLiteral[‘keyword’]'keyword'—
keywordslist[str]Required—
weightfloat1.0—
FieldType / allowed valuesDefaultConstraints
typeLiteral[‘domain’]Required—
allowed_domainslist[str][]—
blocked_domainslist[str][]—
allow_subdomainsboolTrue—
FieldType / allowed valuesDefaultConstraints
typeLiteral[‘url_pattern’]Required—
patternslist[str]Required—
use_regexboolFalse—
reverseboolFalse—
FieldType / allowed valuesDefaultConstraints
typeLiteral[‘content_type’]Required—
allowed_typeslist[str][]—
FieldType / allowed valuesDefaultConstraints
typeLiteral[‘seo’]Required—
thresholdfloat0.5—
keywordslist[str][]—
FieldType / allowed valuesDefaultConstraints
typeLiteral[‘content_relevance’]Required—
querystr''—
thresholdfloat1.0—
FieldType / allowed valuesDefaultConstraints
strategyLiteral[‘bfs’, ‘dfs’, ‘best_first’]'bfs'—
include_externalboolFalse—
concurrencyint | NoneNonegt: 0
score_thresholdfloat | NoneNone—
url_scorerUrlScorer | NoneNone—
filterslist[DeepCrawlFilter][]—
resume_statedict[str, Any] | NoneNone—
FieldType / allowed valuesDefaultConstraints
enabledboolTrue—
querystr | NoneNone—
resume_statedict[str, Any] | NoneNone—
strategyLiteral[‘statistical’, ‘embedding’]'statistical'—
confidence_thresholdfloat0.7ge: 0; le: 1
max_pagesint20gt: 0
top_k_linksint3gt: 0
min_gain_thresholdfloat0.1ge: 0; le: 1
min_pages_before_stopint2ge: 1
saturation_windowint3ge: 1
save_stateboolFalse—
embedding_modelstr'sentence-transformers/all-MiniLM-L6-v2'—
embedding_llm_configdict[str, str] | NoneNone—
query_llm_configdict[str, str] | NoneNone—
n_query_variationsint10ge: 1
embedding_coverage_radiusfloat0.2ge: 0; le: 1
embedding_k_expfloat3.0gt: 0
embedding_min_relative_improvementfloat0.1ge: 0; le: 1
embedding_validation_min_scorefloat0.3ge: 0; le: 1
embedding_min_confidence_thresholdfloat0.1ge: 0; le: 1
embedding_overlap_thresholdfloat0.85ge: 0; le: 1
embedding_quality_min_confidencefloat0.7ge: 0; le: 1
embedding_quality_max_confidencefloat0.95ge: 0; le: 1
FieldType / allowed valuesDefaultConstraints
ignore_linksbool | NoneNone—
ignore_imagesbool | NoneNone—
escape_htmlbool | NoneNone—
body_widthint | NoneNonege: 0
skip_internal_linksbool | NoneNone—
include_sup_subbool | NoneNone—
preserve_tablesbool | NoneNone—
preserve_codebool | NoneNone—
citationsbool | NoneNone—
mark_codebool | NoneNone—
handle_code_in_prebool | NoneNone—
FieldType / allowed valuesDefaultConstraints
providerstr | NoneNone—
modelstr | NoneNone—
backendLiteral[‘auto’, ‘native’, ‘litellm’]'auto'—
FieldType / allowed valuesDefaultConstraints
providerstr | NoneNone—
modelstr | NoneNone—
FieldType / allowed valuesDefaultConstraints
fieldstrRequired—
fromstr | NoneNone—
normalizeLiteral[‘host’, ‘exact’]'exact'—
FieldType / allowed valuesDefaultConstraints
fieldstrRequired—
fromstr | NoneNone—
normalizeLiteral[‘host’, ‘exact’]'exact'—
matchLiteral[‘one’, ‘all’]'one'—
listsLiteral[‘replace’, ‘union’]'replace'—
FieldType / allowed valuesDefaultConstraints
cssstrRequired—
attributestrRequired—
FieldType / allowed valuesDefaultConstraints
sourceLiteral[‘html’, ‘cleaned_html’, ‘fit_html’, ‘llm_result’, ‘query_result’] | NoneNone—
remove_tagslist[str] | NoneNone—
operationLiteral[‘identity’, ‘clean_html’]'identity'—
pattern_typeLiteral[‘jsonpath’, ‘regex’]'jsonpath'—
FieldType / allowed valuesDefaultConstraints
labelstr''—
datalist[float]Required—
FieldType / allowed valuesDefaultConstraints
raw_pageslist[dict[str, Any]] | NoneNonemin_length: 1
pageslist[dict[str, Any]] | NoneNonemin_length: 1
llm_resultAnyNone—
query_resultdict[str, Any] | NoneNone—
transformed_datalist[dict[str, Any]] | NoneNone—
final_answerAnyNone—