Search classifieds on Publi24.
Searches Publi24.ro, the Romanian classifieds site, like its search page: title, price in RON, location, short description and listing link. Promoted ('Promovat') listings are left out. First results page only.
- Site
- Publi24, Romania
- Version
- v1
- Runs, last 7 days
- No reports yet
- sha256
- 82133be3f03e…
Run it with your agent
after installing WieldAsk in plain words. Your agent finds this recipe and calls it:
“Search classifieds on Publi24.”
Read-only: it changes nothing on the site. No login needed.
{ "tool": "run", "arguments": { "recipe_id": "publi24.ro/search-listings", "params": { "query": "bicicleta" } } }
Requests
sent from your browser, in order- 1GET/hirdetesek?qServer-rendered search results page /hirdetesek?q=...; read-only GET. Regular listings are div.article-item inside .article-list; promoted ones carry a .art-promoted badge and are dropped.
Parameters
from your agentquerystringrequiredWhat to look for, e.g. 'bicicleta', 'laptop', 'canapea'
Returns
to your agentitemsobject[]description, location, price_ron, title, url
querystring
Where it can send
- www.publi24.ro
Anything else is blocked by the extension.
Reads from your session
Nothing. Your browser attaches the site's cookies by itself.
Used only in requests to the addresses on the left. Never sent to wield.run or your agent.
Checks
a run passes when- length(output.items) > `0`
- length(output.items[?price_ron != `null`]) > `0`
- length(output.items[?starts_with(url, 'https://www.publi24.ro/')]) == length(output.items)
Raw recipe
Served as canonical JSON from /api/v1/recipes/publi24.ro/search-listings, so its sha256 matches the ETag and the index.
Check it yourself
curl -s https://wield.run/api/v1/recipes/publi24.ro/search-listings | shasum -a 256 # 82133be3f03eae28f622dc6967d420c51c9f1fda62aec1d866f0e3fbc10b7ce2
publi24.ro/search-listings.json, v1
{ "description": "Searches Publi24.ro, the Romanian classifieds site, like its search page: title, price in RON, location, short description and listing link. Promoted ('Promovat') listings are left out. First results page only.", "effect": "read", "id": "publi24.ro/search-listings", "keywords": [ "publi24", "publi24.ro", "anunturi", "anunțuri", "anunturi gratuite", "clasificate", "vanzari", "vânzări", "romania", "second hand", "classifieds", "marketplace", "ieftin", "bicicleta" ], "output": { "schema": { "properties": { "items": { "items": { "properties": { "description": { "description": "Short text from the listing, may be truncated", "type": [ "string", "null" ] }, "location": { "description": "City and district, e.g. 'Sibiu, Sibiu'", "type": [ "string", "null" ] }, "price_ron": { "description": "Asking price in RON, null when not shown or not a number", "type": [ "number", "null" ] }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "title", "url" ], "type": "object" }, "type": "array" }, "query": { "type": "string" } }, "required": [ "query", "items" ], "type": "object" }, "value": "{query: params.query, items: steps.search.listings[?title != `null` && href != `null` && promoted == `null`].{title: title, price_ron: (price && to_number(replace(replace(replace(price, 'RON', ''), ' ', ''), ' ', ''))) || `null`, location: location || `null`, description: description || `null`, url: href}}" }, "params": { "additionalProperties": false, "properties": { "query": { "description": "What to look for, e.g. 'bicicleta', 'laptop', 'canapea'", "maxLength": 100, "minLength": 2, "type": "string" } }, "required": [ "query" ], "type": "object" }, "provenance": { "method": "har", "notes": "GET /hirdetesek?q=<query> (the search form's action) returns 200 HTML. Regular listings are div.article-item under .article-list with title link, span.article-price (e.g. '1 500 RON'), p.article-location and p.article-description. Promoted listings sit above them with a .art-promoted badge and are dropped. The JSON-LD ItemList on the page is not valid JSON, so the HTML is read instead. Listing links are absolute.", "recorded_at": "2026-11-08T16:20:00.000Z", "recorded_by": "wield-forge (claude-haiku agent)" }, "requires_login": false, "schema": "https://wield.run/schema/recipe/v1.json", "site": { "country": "RO", "id": "publi24.ro", "language": "ro", "name": "Publi24", "origin": "https://www.publi24.ro", "origins": [ "https://www.publi24.ro" ] }, "steps": [ { "description": "Server-rendered search results page /hirdetesek?q=...; read-only GET. Regular listings are div.article-item inside .article-list; promoted ones carry a .art-promoted badge and are dropped.", "expect": { "content_type": "html", "status": [ 200 ] }, "extract": { "html_items": { "listings": { "fields": { "description": { "selector": "p.article-description" }, "href": { "attr": "href", "selector": "h2.article-title a" }, "location": { "selector": "p.article-location span" }, "price": { "selector": "span.article-price" }, "promoted": { "selector": ".art-promoted" }, "title": { "selector": "h2.article-title a" } }, "max": 60, "selector": ".article-list .article-item" } } }, "id": "search", "request": { "headers": { "Accept": "text/html" }, "method": "GET", "query": { "q": "{{params.query}}" }, "url": "/hirdetesek" } } ], "task": "Search classifieds on Publi24", "tos": { "notes": "Not reviewed. One search page per call, the same page a visitor loads. The site's terms on automated access were not checked.", "reviewed": false }, "verify": { "checks": [ "length(output.items) > `0`", "length(output.items[?price_ron != `null`]) > `0`", "length(output.items[?starts_with(url, 'https://www.publi24.ro/')]) == length(output.items)" ], "example_params": { "query": "bicicleta" }, "max_ms": 5000 }, "version": 1 }