Skip to content

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.

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

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.

  • 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
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"

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"

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 ""

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.

  • 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
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"

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>

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 &amp;, &lt;, etc. remain as-is

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.

  • Extracting link URLs (href attribute)
  • Getting image source URLs (src attribute)
  • Reading custom data attributes (data-id, data-category, etc.)
  • Getting alt text from images (alt attribute)
  • Reading form input values (value attribute)
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
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">

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"

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.

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.

  • Getting the current value of an input field (value property)
  • Checking if a checkbox is checked (checked property)
  • Getting the scroll position of an element (scrollTop, scrollHeight)
  • Reading the computed inner text (innerText)
  • Getting the inner HTML (innerHTML)
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
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

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)

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

The count type counts the number of elements matching the selector. Instead of extracting data, it returns how many elements were found.

  • Counting the number of reviews for a product
  • Counting items in a list or grid
  • Counting search results
  • Counting elements matching a specific pattern
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"

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)

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

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.

  • 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
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.

{
"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"

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

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.

  • Debugging selector issues
  • Understanding how RTILA found an element
  • Verifying selector generation
  • Learning how selectors are constructed
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"
{
"name": "element_path",
"selector": "css=.product-card h2",
"type": "selector_path"
}

Extracted value: "div.product-list > div.product-card > h2.title"

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

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.

  • Extracting reviews within each product
  • Extracting tags/categories within each article
  • Extracting options within each dropdown
  • Any nested repeating structure within a parent item
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

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.

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."
}
]

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

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.

  • 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
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.

{
"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

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

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.

  1. The property extracts a URL value (e.g., an image src).
  2. If Download is enabled, RTILA checks if the value is a valid URL.
  3. If it’s a URL, RTILA downloads the file to the local output directory.
  4. The output value becomes the local file path instead of the URL.
  5. If the value is not a URL or the download fails, the original value is kept.
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

In the Visual Builder:

  1. Select a property in the Data Extraction tab.
  2. Find the Download checkbox in the property configuration.
  3. Check the box to enable automatic downloading.
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

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

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
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