Property Types
Every dataset in RTILA X is made up of properties — individual fields that define what data to extract from each item on the page. Each property has a type that determines how the data is extracted.
Think of it this way: the item selector finds the repeating container (like a product card), and the properties define what to pull from each container (like the title, price, image URL, etc.).
RTILA X supports 9 property types, each designed for a different kind of data extraction.

Property Types Overview
Section titled “Property Types Overview”| Type | What It Extracts | Example Use Case |
|---|---|---|
text |
Visible text content of an element | Product names, descriptions, prices |
html |
Inner HTML including tags | Rich text content, formatted descriptions |
attribute |
A specific HTML attribute value | Links (href), image sources (src), data attributes |
property |
A JavaScript DOM property | Input values, checkbox states, scroll positions |
count |
Number of matching elements | Number of reviews, ratings count |
page_url |
The current page URL | Tracking which page data came from |
selector_path |
The CSS path of the matched element | Debugging selector issues |
list |
A nested list of sub-items | Reviews within a product, tags within an article |
index |
The row number (1-based) | Adding sequential row numbers to output |
Description
Section titled “Description”The text type extracts the visible text content of an element. It returns all text within the element, including text in child elements, but excludes HTML tags.
When to Use
Section titled “When to Use”- Extracting product names, titles, headings
- Getting prices, descriptions, or any visible text
- Capturing button labels, link text
- Any situation where you need the human-readable text
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | ✅ Yes | The column name in your output (e.g., “title”, “price”) |
selector |
string | ✅ Yes | The selector for the element containing the text |
type |
string | ✅ Yes | Set to "text" |
Example
Section titled “Example”Dataset configuration:
{ "name": "title", "selector": "css=.product-card h2", "type": "text"}HTML on the page:
<div class="product-card"> <h2>Wireless Bluetooth Headphones</h2> <span class="price">$49.99</span></div>Extracted value: "Wireless Bluetooth Headphones"
Output
Section titled “Output”The output is always a string. Even if the text looks like a number (e.g., “49.99”), it’s returned as a string. Use the cast transformation if you need a numeric value.
| Tip | Why |
|---|---|
| Text includes child element text | css=.card will include text from all children |
| Use specific selectors | css=.product-card h2 is more precise than css=.card |
| Whitespace is preserved | Use the trim transformation to remove extra whitespace |
| Empty elements return empty strings | If the element has no text, you get "" |
Description
Section titled “Description”The html type extracts the inner HTML of an element, including all HTML tags. This is useful when you need the raw HTML structure, not just the visible text.
When to Use
Section titled “When to Use”- Extracting rich text content with formatting
- Getting HTML that you’ll process later
- Capturing structured content with links, bold text, etc.
- When you need to preserve HTML structure
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | ✅ Yes | The column name in your output |
selector |
string | ✅ Yes | The selector for the element |
type |
string | ✅ Yes | Set to "html" |
Example
Section titled “Example”Dataset configuration:
{ "name": "description_html", "selector": "css=.product-description", "type": "html"}HTML on the page:
<div class="product-description"> <p>Premium <strong>wireless</strong> headphones with <a href="/features">noise cancellation</a>.</p></div>Extracted value:
<p>Premium <strong>wireless</strong> headphones with <a href="/features">noise cancellation</a>.</p>Output
Section titled “Output”The output is a string containing HTML markup. Unlike text, this preserves all HTML tags.
| Tip | Why |
|---|---|
Use text if you only need readable text |
html includes tags which may not be what you want |
| HTML output can be large | For long content, consider using text instead |
| HTML entities are preserved | &, <, etc. remain as-is |
attribute
Section titled “attribute”Description
Section titled “Description”The attribute type extracts the value of a specific HTML attribute from an element. HTML attributes provide metadata about elements — like where a link points (href), where an image loads from (src), or custom data stored in data-* attributes.
When to Use
Section titled “When to Use”- Extracting link URLs (
hrefattribute) - Getting image source URLs (
srcattribute) - Reading custom data attributes (
data-id,data-category, etc.) - Getting alt text from images (
altattribute) - Reading form input values (
valueattribute)
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | ✅ Yes | The column name in your output |
selector |
string | ✅ Yes | The selector for the element |
type |
string | ✅ Yes | Set to "attribute" |
attribute |
string | ✅ Yes | The name of the HTML attribute to read |
Common Attributes
Section titled “Common Attributes”| Attribute | What It Contains | Example Element |
|---|---|---|
href |
URL of a link | <a href="/products/123"> |
src |
Source URL of image/script | <img src="/images/photo.jpg"> |
alt |
Alternative text for images | <img alt="Blue headphones"> |
title |
Tooltip text | <span title="More info"> |
data-id |
Custom data attribute | <div data-id="12345"> |
data-category |
Custom category data | <div data-category="electronics"> |
value |
Current value of input | <input value="search term"> |
placeholder |
Placeholder text | <input placeholder="Enter email"> |
class |
CSS classes | <div class="product-card featured"> |
id |
Element ID | <div id="main-content"> |
Example
Section titled “Example”Extract a product link:
{ "name": "product_url", "selector": "css=.product-card a.product-link", "type": "attribute", "attribute": "href"}HTML on the page:
<a class="product-link" href="/products/wireless-headphones-123">View Product</a>Extracted value: "/products/wireless-headphones-123"
Extract an image source:
{ "name": "image_url", "selector": "css=.product-card img", "type": "attribute", "attribute": "src"}HTML on the page:
<img src="/images/products/headphones-blue.jpg" alt="Blue Headphones">Extracted value: "/images/products/headphones-blue.jpg"
Output
Section titled “Output”The output is always a string containing the attribute value. If the attribute doesn’t exist on the element, the result is null.
| Tip | Why |
|---|---|
Use href for links |
Gets the URL the link points to |
Use src for images |
Gets the image source URL |
Use data-* for custom data |
Many sites store IDs in data attributes |
| Check if attribute exists | If missing, result is null |
| Relative URLs stay relative | href="/products/123" stays as-is. Use transformations to make absolute. |
property
Section titled “property”Description
Section titled “Description”The property type extracts a JavaScript DOM property from an element. While HTML attributes are defined in the markup, DOM properties are the live JavaScript values that may differ from the HTML.
When to Use
Section titled “When to Use”- Getting the current value of an input field (
valueproperty) - Checking if a checkbox is checked (
checkedproperty) - Getting the scroll position of an element (
scrollTop,scrollHeight) - Reading the computed inner text (
innerText) - Getting the inner HTML (
innerHTML)
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | ✅ Yes | The column name in your output |
selector |
string | ✅ Yes | The selector for the element |
type |
string | ✅ Yes | Set to "property" |
property |
string | ✅ Yes | The name of the DOM property to read |
Common DOM Properties
Section titled “Common DOM Properties”| Property | Type | What It Returns | Example |
|---|---|---|---|
value |
string | Current value of input/textarea/select | What the user typed |
checked |
boolean | Whether checkbox/radio is checked | true or false |
innerText |
string | Visible text content | Same as text type |
innerHTML |
string | HTML content including tags | Same as html type |
scrollHeight |
number | Total scrollable height | 1500 (pixels) |
scrollTop |
number | Current scroll position | 350 (pixels) |
clientWidth |
number | Visible width of element | 800 (pixels) |
disabled |
boolean | Whether element is disabled | true or false |
selectedIndex |
number | Selected option index in dropdown | 2 |
Example
Section titled “Example”Get input field value:
{ "name": "search_value", "selector": "css=input#search-box", "type": "property", "property": "value"}Check if checkbox is checked:
{ "name": "is_subscribed", "selector": "css=input#newsletter", "type": "property", "property": "checked"}Output: true or false (boolean)
Difference Between attribute and property
Section titled “Difference Between attribute and property”| Aspect | attribute |
property |
|---|---|---|
| Source | HTML markup | Live JavaScript value |
| Example | value="initial" in HTML |
element.value (what user typed) |
| Changes | Stays as originally written | Updates as user interacts |
| Type | Always string | Native type (string, boolean, number) |
| Use case | Static metadata | Dynamic state |
Rule of thumb: Use attribute for static HTML attributes (href, src, data-*). Use property for dynamic JavaScript values (value, checked, scrollTop).
| Tip | Why |
|---|---|
Use property for input values |
Gets what the user actually typed, not the initial HTML |
Use property for checkbox state |
checked returns true/false |
| Property types vary | value returns string, checked returns boolean, scrollHeight returns number |
| If property doesn’t exist | Result is undefined |
Description
Section titled “Description”The count type counts the number of elements matching the selector. Instead of extracting data, it returns how many elements were found.
When to Use
Section titled “When to Use”- Counting the number of reviews for a product
- Counting items in a list or grid
- Counting search results
- Counting elements matching a specific pattern
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | ✅ Yes | The column name in your output |
selector |
string | ✅ Yes | The selector for the elements to count |
type |
string | ✅ Yes | Set to "count" |
Example
Section titled “Example”Count reviews:
{ "name": "review_count", "selector": "css=.product-card .review", "type": "count"}HTML on the page:
<div class="product-card"> <div class="review">Great product!</div> <div class="review">Good value</div> <div class="review">Would buy again</div></div>Extracted value: 3 (number)
Output
Section titled “Output”The output is a number representing the count of matching elements. If no elements match, the count is 0.
| Tip | Why |
|---|---|
| Count is relative to the item selector | If your item selector is .product-card, count counts elements within each card |
| Use for statistics | Count of reviews, ratings, images, etc. |
| Zero is valid | If no elements match, count returns 0 |
page_url
Section titled “page_url”Description
Section titled “Description”The page_url type returns the current page URL. This is useful for tracking which page each extracted record came from, especially when scraping multiple pages.
When to Use
Section titled “When to Use”- Tracking the source URL for each extracted record
- Building relative URLs into absolute URLs
- Debugging which page produced specific data
- Multi-page scraping where you need to know the source
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | ✅ Yes | The column name in your output |
type |
string | ✅ Yes | Set to "page_url" |
Note: The page_url type does not require a selector parameter. It automatically returns the current page URL.
Example
Section titled “Example”{ "name": "source_url", "type": "page_url"}If the current page is: https://example.com/products?page=2
Extracted value: "https://example.com/products?page=2"
Output
Section titled “Output”The output is a string containing the full URL of the current page.
| Tip | Why |
|---|---|
| No selector needed | page_url automatically returns the current URL |
| Great for multi-page scraping | Tracks which page each record came from |
| Combine with transformations | Use prefix or replace to modify the URL |
| Useful for debugging | Helps identify which page produced specific data |
selector_path
Section titled “selector_path”Description
Section titled “Description”The selector_path type returns the CSS selector path of the matched element. This is primarily a debugging tool that shows you the exact selector path RTILA used to find an element.
When to Use
Section titled “When to Use”- Debugging selector issues
- Understanding how RTILA found an element
- Verifying selector generation
- Learning how selectors are constructed
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | ✅ Yes | The column name in your output |
selector |
string | ✅ Yes | The selector for the element |
type |
string | ✅ Yes | Set to "selector_path" |
Example
Section titled “Example”{ "name": "element_path", "selector": "css=.product-card h2", "type": "selector_path"}Extracted value: "div.product-list > div.product-card > h2.title"
Output
Section titled “Output”The output is a string containing the CSS path from the root of the page to the matched element.
| Tip | Why |
|---|---|
| Primarily for debugging | Not typically used in production scraping |
| Shows the full path | From page root to the matched element |
| Helps verify selectors | Confirms RTILA found the right element |
Description
Section titled “Description”The list type extracts a nested list of sub-items from within each parent item. This is used for hierarchical data — for example, extracting all reviews within each product, or all tags within each article.
When to Use
Section titled “When to Use”- Extracting reviews within each product
- Extracting tags/categories within each article
- Extracting options within each dropdown
- Any nested repeating structure within a parent item
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | ✅ Yes | The column name in your output |
selector |
string | ✅ Yes | The selector for the repeating sub-items |
type |
string | ✅ Yes | Set to "list" |
properties |
array | ✅ Yes | Sub-properties to extract from each sub-item |
Sub-Properties
Section titled “Sub-Properties”Each sub-property inside a list property works just like a regular property. It has its own name, selector, and type. The selectors are relative to each sub-item, not to the page.
Example
Section titled “Example”Extract reviews within each product:
{ "name": "reviews", "selector": "css=.review", "type": "list", "properties": [ { "name": "reviewer_name", "selector": "css=.reviewer", "type": "text" }, { "name": "rating", "selector": "css=.stars", "type": "attribute", "attribute": "data-rating" }, { "name": "comment", "selector": "css=.comment", "type": "text" } ]}HTML on the page:
<div class="product-card"> <h2>Wireless Headphones</h2> <div class="review"> <span class="reviewer">John D.</span> <span class="stars" data-rating="5">★★★★★</span> <p class="comment">Excellent sound quality!</p> </div> <div class="review"> <span class="reviewer">Sarah M.</span> <span class="stars" data-rating="4">★★★★☆</span> <p class="comment">Good value for money.</p> </div></div>Extracted value:
[ { "reviewer_name": "John D.", "rating": "5", "comment": "Excellent sound quality!" }, { "reviewer_name": "Sarah M.", "rating": "4", "comment": "Good value for money." }]Output
Section titled “Output”The output is an array of objects. Each object represents one sub-item and contains all the sub-properties.

| Tip | Why |
|---|---|
| Sub-selectors are relative | They’re relative to each sub-item, not the page |
| Can nest lists | You can have a list inside a list for deep nesting |
| Empty lists return empty arrays | If no sub-items match, you get [] |
| Use for hierarchical data | Reviews, tags, options, variants |
Description
Section titled “Description”The index type returns the row number (1-based) of each extracted item. The first item is index 1, the second is index 2, and so on.
When to Use
Section titled “When to Use”- Adding sequential row numbers to your output
- Creating unique identifiers for each record
- Tracking the order of extracted items
- Generating sequential IDs for database insertion
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | ✅ Yes | The column name in your output |
type |
string | ✅ Yes | Set to "index" |
Note: The index type does not require a selector parameter. It automatically returns the position of the current item.
Example
Section titled “Example”{ "name": "row_number", "type": "index"}If 5 items are extracted:
| row_number | title | price |
|---|---|---|
| 1 | Wireless Headphones | $49.99 |
| 2 | Bluetooth Speaker | $29.99 |
| 3 | USB-C Cable | $9.99 |
| 4 | Phone Case | $14.99 |
| 5 | Screen Protector | $7.99 |
Output
Section titled “Output”The output is a number starting from 1 for the first item.
| Tip | Why |
|---|---|
| No selector needed | index automatically returns the position |
| 1-based indexing | First item is 1, not 0 |
| Resets per extraction | Each extract_data call starts counting from 1 |
| Great for row numbers | Adds sequential numbering to output |
Download Option
Section titled “Download Option”For properties that extract URLs (like image sources or file links), you can enable the Download option. When enabled, RTILA X automatically downloads the file and stores the local file path instead of the URL.
How It Works
Section titled “How It Works”- The property extracts a URL value (e.g., an image
src). - If Download is enabled, RTILA checks if the value is a valid URL.
- If it’s a URL, RTILA downloads the file to the local output directory.
- The output value becomes the local file path instead of the URL.
- If the value is not a URL or the download fails, the original value is kept.
When to Use
Section titled “When to Use”| Scenario | Enable Download? | Why |
|---|---|---|
| Extracting image URLs for local storage | ✅ Yes | Downloads images locally |
| Extracting PDF links | ✅ Yes | Downloads PDFs for offline access |
| Extracting product page URLs | ❌ No | You want the URL, not the page content |
| Extracting API endpoints | ❌ No | You want the URL for API calls |
| Extracting external links | ❌ No | You want the link URL |
Enabling Download
Section titled “Enabling Download”In the Visual Builder:
- Select a property in the Data Extraction tab.
- Find the Download checkbox in the property configuration.
- Check the box to enable automatic downloading.
Behavior Details
Section titled “Behavior Details”| Aspect | Description |
|---|---|
| File location | Downloaded files are saved to RTILA’s output directory |
| File naming | Files are named based on the URL’s filename |
| Duplicate handling | If the file already exists, it may be overwritten |
| Failed downloads | If download fails, the original URL value is kept |
| Non-URL values | If the value isn’t a URL, it’s kept as-is |
Example
Section titled “Example”Property configuration:
{ "name": "product_image", "selector": "css=.product-card img", "type": "attribute", "attribute": "src", "download": true}Without Download enabled:
"product_image": "/images/products/headphones.jpg"With Download enabled:
"product_image": "output/downloads/headphones.jpg"| Tip | Why |
|---|---|
| Use for images and files | Downloads images, PDFs, and other files locally |
| Don’t use for page URLs | You want the URL, not the page content |
| Check file paths after download | Verify files were downloaded correctly |
| Large files take time | Downloading many large files slows down extraction |
Choosing the Right Property Type
Section titled “Choosing the Right Property Type”Use this decision table to pick the best property type:
| What You Need | Property Type | Example |
|---|---|---|
| Visible text (name, price, description) | text |
Product title |
| HTML with formatting | html |
Rich text description |
| Link URL | attribute with href |
Product page URL |
| Image source URL | attribute with src |
Product image URL |
| Custom data attribute | attribute with data-* |
Product ID |
| Input field value | property with value |
Search box content |
| Checkbox state | property with checked |
Newsletter subscription |
| Number of items | count |
Number of reviews |
| Current page URL | page_url |
Source URL tracking |
| Element’s CSS path | selector_path |
Debugging |
| Nested sub-items | list |
Reviews within products |
| Row number | index |
Sequential numbering |
Property Type Comparison Table
Section titled “Property Type Comparison Table”| Type | Needs Selector | Output Type | Common Use |
|---|---|---|---|
text |
✅ Yes | String | Names, prices, descriptions |
html |
✅ Yes | String (HTML) | Rich text content |
attribute |
✅ Yes | String | URLs, data attributes |
property |
✅ Yes | Varies (string, boolean, number) | Input values, states |
count |
✅ Yes | Number | Counting elements |
page_url |
❌ No | String | Source URL |
selector_path |
✅ Yes | String | Debugging |
list |
✅ Yes | Array of objects | Nested data |
index |
❌ No | Number | Row numbering |