# Response Parsing Nodes
Extract structured data from LLM responses. A **Response Spec** describes the expected format; extractors pull out anchored sections, code blocks, lists or regex matches from the raw response text.
_9 nodes._
| Node | Registry path |
| --- | --- |
| [After Anchor Extractor](#after-anchor-extractor) | `response/AfterAnchorExtractor` |
| [Anchor Extractor](#anchor-extractor) | `response/AnchorExtractor` |
| [AsIs Extractor](#asis-extractor) | `response/AsIsExtractor` |
| [Code Block Extractor](#code-block-extractor) | `response/CodeBlockExtractor` |
| [Complex Anchor Extractor](#complex-anchor-extractor) | `response/ComplexAnchorExtractor` |
| [Complex Code Block Extractor](#complex-code-block-extractor) | `response/ComplexCodeBlockExtractor` |
| [Regex Extractor](#regex-extractor) | `response/RegexExtractor` |
| [Response Spec](#response-spec) | `response/ResponseSpec` |
| [Strip Prefix Extractor](#strip-prefix-extractor) | `response/StripPrefixExtractor` |
## After Anchor Extractor
`response/AfterAnchorExtractor`
Creates an AfterAnchorExtractor that extracts everything after a start marker.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `name` | `str` | (optional) Optional override for name property |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `name` | `str` | The extractor name (pass-through) |
| `value` | `response/extractor` | The AfterAnchorExtractor instance |
| `spec` | `response/spec` | A ResponseSpec containing just this extractor |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `name` | `str` | `""` | Extractor name (key for dict collector) |
| `start` | `str` | `""` | Start marker to search for |
| `stop_at` | `str` | `""` | Optional end marker (empty = no stop) |
| `fallback_to_full` | `bool` | `False` | Return full response if start marker not found |
| `trim` | `bool` | `True` | Trim whitespace from result |
## Anchor Extractor
`response/AnchorExtractor`
Creates an AnchorExtractor that extracts content between anchor tags.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `name` | `str` | (optional) Optional override for name property |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `name` | `str` | The extractor name (pass-through) |
| `value` | `response/extractor` | The AnchorExtractor instance |
| `spec` | `response/spec` | A ResponseSpec containing just this extractor |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `name` | `str` | `""` | Extractor name (key for dict collector) |
| `left` | `str` | `""` | Left anchor tag (e.g., ) |
| `right` | `str` | `""` | Right anchor tag (e.g., ) |
| `fallback_to_full` | `bool` | `False` | Return full response if anchors not found |
| `trim` | `bool` | `True` | Trim whitespace from result |
## AsIs Extractor
`response/AsIsExtractor`
Creates an AsIsExtractor that returns the entire response as-is.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `name` | `str` | (optional) Optional override for name property |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `name` | `str` | The extractor name (pass-through) |
| `value` | `response/extractor` | The AsIsExtractor instance |
| `spec` | `response/spec` | A ResponseSpec containing just this extractor |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `name` | `str` | `""` | Extractor name (key for dict collector) |
| `trim` | `bool` | `True` | Trim whitespace from result |
## Code Block Extractor
`response/CodeBlockExtractor`
Creates a CodeBlockExtractor that extracts code blocks from tagged sections.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `name` | `str` | (optional) Optional override for name property |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `name` | `str` | The extractor name (pass-through) |
| `value` | `response/extractor` | The CodeBlockExtractor instance |
| `spec` | `response/spec` | A ResponseSpec containing just this extractor |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `name` | `str` | `""` | Extractor name (key for dict collector) |
| `left` | `str` | `""` | Left anchor tag (e.g., ) |
| `right` | `str` | `""` | Right anchor tag (e.g., ) |
| `validate_structured` | `bool` | `True` | Validate content as JSON/YAML for no-fence fallback |
| `fallback_to_full` | `bool` | `False` | Return full response if anchors not found |
| `trim` | `bool` | `True` | Trim whitespace from result |
## Complex Anchor Extractor
`response/ComplexAnchorExtractor`
Creates a ComplexAnchorExtractor with nesting awareness.
Tracks multiple tags and only extracts target blocks when at root level.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `name` | `str` | (optional) Optional override for name property |
| `tracked_tags` | `list` | (optional) Optional override for tracked_tags property |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `name` | `str` | The extractor name (pass-through) |
| `value` | `response/extractor` | The ComplexAnchorExtractor instance |
| `spec` | `response/spec` | A ResponseSpec containing just this extractor |
| `tracked_tags` | `list` | The tracked tags list (pass-through) |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `name` | `str` | `""` | Extractor name (key for dict collector) |
| `left` | `str` | `""` | Left anchor tag (e.g., ) |
| `right` | `str` | `""` | Right anchor tag (e.g., ) |
| `tracked_tags` | `list` | `[]` | Tags to track for nesting awareness |
| `fallback_to_full` | `bool` | `False` | Return full response if anchors not found |
| `trim` | `bool` | `True` | Trim whitespace from result |
## Complex Code Block Extractor
`response/ComplexCodeBlockExtractor`
Creates a ComplexCodeBlockExtractor with nesting awareness for code blocks.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `name` | `str` | (optional) Optional override for name property |
| `tracked_tags` | `list` | (optional) Optional override for tracked_tags property |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `name` | `str` | The extractor name (pass-through) |
| `value` | `response/extractor` | The ComplexCodeBlockExtractor instance |
| `spec` | `response/spec` | A ResponseSpec containing just this extractor |
| `tracked_tags` | `list` | The tracked tags list (pass-through) |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `name` | `str` | `""` | Extractor name (key for dict collector) |
| `left` | `str` | `""` | Left anchor tag (e.g., ) |
| `right` | `str` | `""` | Right anchor tag (e.g., ) |
| `tracked_tags` | `list` | `[]` | Tags to track for nesting awareness |
| `validate_structured` | `bool` | `True` | Validate content as JSON/YAML for no-fence fallback |
| `fallback_to_full` | `bool` | `False` | Return full response if anchors not found |
| `trim` | `bool` | `True` | Trim whitespace from result |
## Regex Extractor
`response/RegexExtractor`
Creates a RegexExtractor that extracts content using regex patterns.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `name` | `str` | (optional) Optional override for name property |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `name` | `str` | The extractor name (pass-through) |
| `value` | `response/extractor` | The RegexExtractor instance |
| `spec` | `response/spec` | A ResponseSpec containing just this extractor |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `name` | `str` | `""` | Extractor name (key for dict collector) |
| `pattern` | `str` | `""` | Regex pattern with capture group |
| `case_insensitive` | `bool` | `False` | Ignore case when matching |
| `group` | `int` | `1` | Capture group to extract |
| `all_matches` | `bool` | `False` | Return list of all matches |
| `trim` | `bool` | `True` | Trim whitespace from result |
## Response Spec
`response/ResponseSpec`
Creates a ResponseSpec from a dictionary of extractors.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `extractors` | `dict` | Dictionary of name -> Extractor (from DictCollector) |
| `required` | `list` | (optional) Optional override for required property |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `spec` | `response/spec` | The ResponseSpec instance |
| `extractors` | `dict` | Pass-through of the extractors dict |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `required` | `list` | `[]` | List of required field names |
## Strip Prefix Extractor
`response/StripPrefixExtractor`
Creates a StripPrefixExtractor that strips patterns using regex substitution.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `name` | `str` | (optional) Optional override for name property |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `name` | `str` | The extractor name (pass-through) |
| `value` | `response/extractor` | The StripPrefixExtractor instance |
| `spec` | `response/spec` | A ResponseSpec containing just this extractor |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `name` | `str` | `""` | Extractor name (key for dict collector) |
| `pattern` | `str` | `""` | Regex pattern to strip |
| `replacement` | `str` | `""` | Replacement string |
| `trim` | `bool` | `True` | Trim whitespace from result |