Check the AL licence number of Airbnb and Booking.com listings in Portugal against the national register (RNAL): verdict, registered holder with tax number, e-mail and phone, address with floor, authorised guests, insurance — or list every AL of a municipality.
Airbnb listing ID; Booking.com property ID; for a licence number given alone, the number as typed; for a register record, its number (42391/AL).
Type:string
Example:
1550967010992579703
Source
source
Required
airbnb_listing (an Airbnb listing checked), airbnb_card (the card of an Airbnb search result, with Cards only: no listing page read, nothing checked), booking_listing (a Booking.com property checked), license_number (a number from Licence numbers to check, no listing) or register_list (a record of Register lists, no listing).
Type:string
Example:
airbnb_listing
Listing URL
url
Optional
Airbnb listing or Booking.com property page; the register page for a licence number or a register record.
Type:string | null
Example:
https://www.airbnb.com/rooms/846093318788581404
Title
title
Optional
Listing name as the host wrote it; the registered name for a licence number or a register record.
Type:string | null
Example:
Cozy apartments Plaza España, 3 bedrooms
Verdict
verdict
Required
Result of the check, the most serious problem first: valid, never_issued, not_in_register, other_property, over_capacity, unknown_format, no_number, exempt_claimed, other_register, region_not_covered, register_unavailable; unchecked on a row of a cards-only run (no check made).
Type:string
Example:
valid
Verdict reasons
verdictReasons
Required
Every problem found (the verdict is the most serious one): the verdicts themselves, plus far_from_listing and other_region (verdict other_property), and for information only bare_number (the number is shown without /AL: read as an AL number, it may be another register's), several_numbers (the listing shows more than one number: the first is checked), no_insurance (the register shows no liability insurance) and insurance_expired (its end date has passed).
Type:string[]
Example:
[
"over_capacity"
]
Verdict explained
verdictNote
Required
Plain English: what was compared, what did not match, and what the register gives no data to check (position in Madeira, guests).
Type:string
Example:
HUTB-064079 is in the Catalan register (Barcelona, floor 3, door 1), 0.4 km from the listing; 5 guests for 1 authorised place.
Suspicious
isSuspicious
Required
True when the verdict is a problem (never_issued, not_in_register, other_property, over_capacity, unknown_format, no_number).
Type:boolean
Example:
false
Region
region
Optional
Where the listing is (a licence number or register record: its registered address): mainland, madeira, azores (own regional register, RRAL: not checked), other (outside Portugal).
Type:string | null
Example:
mainland
Registration details (raw)
registrationText
Optional
The 'Registration details' text shown on the listing, lines joined by |.
Type:string | null
Example:
Barcelona - Regional registration number | HUTB-064079 | Spain - National registration number | ESFCTU0AD10806700043751100000000000000HUTB-064079-092
Booking licence phrases
licensePhrases
Required
Booking.com only: the licence sentences shown on the property (License number: 42391/AL, This property doesn't require a short-term rental license).
Type:string[]
Example:
[
"License number: 42391/AL"
]
Licence number
licenseNumber
Optional
AL licence number shown on the listing, as written (42391/AL, AL57277, 12833).
Type:string | null
Example:
42391/AL
Licence number (register spelling)
licenseNumberNormalized
Optional
The same number as the register writes it (42391/AL): the key used for the check.
Type:string | null
Example:
42391/AL
Other numbers shown
otherLicenseNumbers
Required
Further AL numbers the listing shows (a building with several licences), register spelling; only the first is checked.
Type:string[]
Example:
[]
Exemption claimed
exemption
Optional
Exemption text shown instead of a number (Exempt).
Type:string | null
Example:
null
Same number on other listings
numberSharedWith
Required
IDs of the listings checked earlier in this run that show the same licence number.
Type:string[]
Example:
[]
Found in the register
registerFound
Required
True when the number is in the national register (RNAL).
Type:boolean
Example:
true
Register number
registerNumber
Optional
Number as the register writes it.
Type:string | null
Example:
42391/AL
Register page
registerUrl
Optional
Public page of the record on the national register (rnt.turismodeportugal.pt).
Kind of accommodation (modalidade) as registered: Apartamento, Moradia, Quartos, Estabelecimento de hospedagem, Estabelecimento de hospedagem - Hostel.
Type:string | null
Example:
Apartamento
Registered on
registerDate
Optional
Date of registration, YYYY-MM-DD.
Type:string | null
Example:
2017-02-13
Open to the public since
registerOpeningDate
Optional
Opening date declared to the register, YYYY-MM-DD.
Type:string | null
Example:
2017-02-18
Registered holder
registerHolder
Optional
Holder of the licence (titular da exploração): a person or a company, as the register names it (the first one when there are several: see Holders).
Type:string | null
Example:
Hexa Living Lda
Holder tax number
registerHolderTaxId
Optional
Portuguese tax number of the holder (NIF of a person, NIPC of a company), as published by the register.
Type:string | null
Example:
509421679
Holder type
registerHolderType
Optional
person (tax number starting 1, 2, 3 or 45), company (5, 6, 71, 72, 9…) or other (an undivided estate, 70 / 74 / 75), read from the tax number.
Where the host says they live (host profile, when Host's listing count is on).
Type:string | null
Example:
Barcelona, Spain
Co-hosts
coHosts
Required
First names of the listing's co-hosts shown on Airbnb.
Type:string[]
Example:
[
"Numa Guest Experience Spain"
]
Host's listings
hostListingsCount
Optional
Number of listings the host manages (host profile, when Host's listing count is on).
Type:integer | null
Example:
1
Host's listing IDs
hostListingIds
Required
IDs of the listings shown on the host profile — the first 10 at most, Airbnb shows no more there (when Host's listing count is on).
Type:string[]
Example:
[
"846093318788581404"
]
Business name
businessName
Optional
Business name the host must show as a professional (EU rule).
Type:string | null
Example:
ASPASION SHORT RENTALS
Business registry
businessRegistry
Optional
Business register named by the host.
Type:string | null
Example:
Spanish Business Register
Business tax ID
businessTaxId
Optional
Tax identification number the business host gives.
Type:string | null
Example:
null
Business e-mail
businessEmail
Optional
E-mail of the business host: the professional block Airbnb shows (free, Airbnb listings), or - with Business contact (Booking.com) - the e-mail Booking.com shows for a professional host (Booking.com properties).
Type:string | null
Example:
arrivostay@aspasios.com
Business phone
businessPhone
Optional
Phone of the business host: the professional block Airbnb shows (free, Airbnb listings), or - with Business contact (Booking.com) - the phone Booking.com shows for a professional host (Booking.com properties).
Type:string | null
Example:
+34 635 79 03 53
Business address
businessAddress
Optional
Address of the business host.
Type:string | null
Example:
Ronda de Sant Pere, 39, 08010, Barcelona, Cataluña, Spain
Price
price
Optional
Total price of the stay shown on the search results (dates of the search, or Airbnb's own dates); null for listings given by URL or ID.
Type:number | null
Example:
923
Currency
currency
Optional
Currency of the price.
Type:string | null
Example:
EUR
Price per night
pricePerNight
Optional
Average nightly rate of the priced stay, before taxes and fees.
Type:number | null
Example:
165.93
Price (as shown)
priceText
Optional
Price label as Airbnb shows it.
Type:string | null
Example:
€923 total
Price details
priceDetails
Required
Lines of Airbnb's price breakdown (nights, taxes and fees…).
Type:string[]
Example:
[
"5 nights x €165.93: €829.63",
"Taxes and fees: €82.96"
]
Nights
priceNights
Optional
Number of nights the price covers.
Type:integer | null
Example:
5
Check-in
checkIn
Optional
First night of the priced stay, YYYY-MM-DD.
Type:string | null
Example:
2026-10-02
Check-out
checkOut
Optional
End of the priced stay, YYYY-MM-DD.
Type:string | null
Example:
2026-10-07
Search URL
searchUrl
Optional
Search the listing was found by; null for listing URLs, listing IDs, licence numbers and register records.
Type:string | null
Example:
https://www.airbnb.com/s/Barcelona--Spain/homes
Booking.com ID
bookingId
Optional
Booking.com property ID (Booking rows only).
Type:string | null
Example:
8416068
Booking.com page name
bookingPageName
Optional
Booking.com page name of the property (alfama-sunny-flat), with its country code in url.
Type:string | null
Example:
alfama-sunny-flat
Booking.com professional host
isTrader
Optional
Booking.com only: the host declared as a trader (professional) under EU law.
Type:boolean | null
Example:
true
Risk score
riskScore
Optional
With Risk score (0-100): 0 (nothing wrong) to 100, the sum of the weights of the rules that fired, 100 at most; null when the option is off, the row is no listing, or the register could not be read.
Type:integer | null
Example:
65
Risk reasons
riskReasons
Required
With Risk score (0-100): the codes of the rules that gave the score, in the order of the rules: verdict_<verdict> (the verdict of the check), number_shared, distance_over_300m, property_type_mismatch, insurance_expired, no_insurance, host_3_or_more_listings, host_2_listings. [] when off.
Type:string[]
Example:
[
"verdict_not_in_register"
]
Risk rules skipped
riskChecksSkipped
Required
With Risk score (0-100): the rules that could not play for lack of data, never counted as a risk: distance, property_type, host_listings, and always over_180_nights (this Actor reads no calendar); verdict when the register could not be read. [] when off.
Type:string[]
Example:
[
"host_listings",
"over_180_nights"
]
AI labels
aiLabels
Optional
Four yes / no labels read in the description of an Airbnb listing, only with AI labels (needs 2 GB of memory): managed_by_company (managed by a company or a property manager), self_check_in (self check-in with a lockbox or a keypad), long_stay (monthly or long stays, 28 nights or more), mentions_licence (the text mentions a licence or a permit). Indications read in the text, not facts. Null when the option is off, the memory was under 2 GB, the description is not in English or missing (Booking.com properties have none), or the labels could not be read for that row.
Type:object | null
Example:
[object Object]
AI label scores
aiLabelScores
Optional
The confidence from 0 to 1 behind each of the AI labels, same keys, 4 decimals: a label is true from its threshold (see the README), the strongest part of a long description counts; 0 when the description says nothing about it. Null when AI labels is null.
Type:object | null
Example:
[object Object]
Comparables
comparables
Required
Comparable listings (option): the Airbnb listings around this one, of the same type of place and within one bedroom of it, the nearest first (up to Max comparables per listing). Each: id, url, pricePerNight (the average nightly rate of the dates searched, before taxes and fees; null without Check-in and Check-out), currency, bedrooms, rating, distanceKm (from this listing's point, 10 m). Read from the cards of a search of the area: Airbnb blurs every position by about 150 m. Empty when the option is off, for a Booking.com property, or when nothing was found.
Type:object[]
Example:
[
{
"id":"54337662",
"url":"https://www.airbnb.com/rooms/54337662",
"pricePerNight":191.11,
"currency":"EUR",
"bedrooms":3,
"rating":4.69,
"distanceKm":0.18
}
]
Comparables median price
comparablesMedianPrice
Optional
Comparable listings (option): the median price per night of the comparables that have one, in their currency, to the cent. Null without Check-in and Check-out, or without comparables.
Type:number | null
Example:
184.5
Photo files
photoFiles
Required
Download photos (option): the public links of the photos kept in this run's key-value store, in the order of the listing's photos (the first Max photos per listing that could be had). The links in Photos stay free. Empty when the option is off or no photo could be had.
Download photos (option): ISO 8601 time at which the photos were downloaded. Null without photos.
Type:string | null
Example:
2026-10-10T20:00:00.000Z
Professional host company
proHostCompany
Optional
Professional host contact (option): the company of a professional Airbnb host the contact below is of. Null without a contact, and when the option is off.
Type:string | null
Example:
Mi Casa Suites
Professional host website
proHostWebsite
Optional
Professional host contact (option): the website of the company. Null without a contact.
Type:string | null
Example:
https://micasasuites.pt
Professional host e-mails
proHostEmails
Required
Professional host contact (option): business e-mail addresses of the host's company, from publicly available sources (3 at most). Empty when the option is off, when the listing already had a contact, or when none was found.
Type:string[]
Example:
[
"info@micasasuites.pt"
]
Professional host phones
proHostPhones
Required
Professional host contact (option): business phone numbers of the host's company, from publicly available sources (3 at most), as +351 912 345 678. Empty when the option is off, when the listing already had a contact, or when none was found.
Type:string[]
Example:
[
"+351 912 345 678"
]
Professional host contact source
proHostContactSourceUrl
Optional
Professional host contact (option): the page the contact was read from. Null without a contact.
Type:string | null
Example:
https://micasasuites.pt/contact
Professional host contact confidence
proHostContactConfidence
Optional
Professional host contact (option): high when an e-mail is on the company's own domain, medium otherwise (a phone only, or an e-mail on another domain). Null without a contact.