{
  "openapi": "3.0.1",
  "info": {
    "title": "Tradera Sold Prices & New Listing Alerts",
    "description": "Tradera sold prices: ended auctions with final price and bid count, plus live and unsold listings, one row per listing. Optional price summary per search. Monitor a search and get new-listing or price-below alerts in Slack, Discord or Telegram. No login or key; empty searches are free.",
    "version": "1.0",
    "x-build-id": "4VkJPmS0dPiIeBTGj"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/accountable_eel~tradera-sold-lookup/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-accountable_eel-tradera-sold-lookup",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/accountable_eel~tradera-sold-lookup/runs": {
      "post": {
        "operationId": "runs-sync-accountable_eel-tradera-sold-lookup",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/accountable_eel~tradera-sold-lookup/run-sync": {
      "post": {
        "operationId": "run-sync-accountable_eel-tradera-sold-lookup",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "searches"
        ],
        "properties": {
          "searches": {
            "title": "Tradera searches",
            "type": "array",
            "description": "One search per line: keywords such as iphone 13, or a pasted tradera.com search link (only its search words are used; set price, category and dates below). Each search returns one row per listing. Accepted formats: iphone 13, lego star wars 75192, https://www.tradera.com/search?q=iphone+13. You're only charged for the ones we actually find — a miss costs nothing.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "What to read",
            "enum": [
              "sold",
              "live",
              "unsold"
            ],
            "type": "string",
            "description": "Sold: ended auctions that sold, with the final price. Live: listings that are for sale now, newest first. Unsold: ended auctions nobody bought.",
            "default": "sold"
          },
          "maxItems": {
            "title": "Listings per search",
            "type": "integer",
            "description": "Most listings returned for each search line (80 per page, at most 25 pages read). Local filters below are applied while reading, so this counts listings that passed them.",
            "default": 50
          },
          "categoryId": {
            "title": "Category number (optional)",
            "type": "integer",
            "description": "Tradera's category number, the last number in a category link such as tradera.com/category/2601 (Mobiltelefoner). Leave empty to search every category."
          },
          "minPrice": {
            "title": "Lowest price (SEK)",
            "type": "integer",
            "description": "Optional. Keeps listings priced at or above this. Sent to Tradera (which reads the listed price) and then enforced on the final price, so a sold row must satisfy both."
          },
          "maxPrice": {
            "title": "Highest price (SEK)",
            "type": "integer",
            "description": "Optional. Keeps listings priced at or below this. Sent to Tradera and then enforced on the final price, so a sold row must satisfy both."
          },
          "endedAfter": {
            "title": "Ended on or after (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional, sold and unsold searches only. Keeps listings whose end date (UTC) is on or after this date. Applied after reading, so a long ago date costs more pages, not more money; the run stops after 25 pages per search.",
            "default": ""
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "auto",
              "relevance",
              "newest"
            ],
            "type": "string",
            "description": "Auto reads live searches newest first and sold or unsold searches in Tradera's best-match order. Newest listed puts the most recently listed items first, whatever the mode.",
            "default": "auto"
          },
          "includeCompsSummary": {
            "title": "Add a price summary row per search",
            "type": "boolean",
            "description": "Adds one extra row after each search: how many listings, how many sold, median, 25th and 75th percentile, lowest, highest, median bids and the newest end date, worked out from the listings returned. Billed as one summary per search that returned listings.",
            "default": false
          },
          "deltaMode": {
            "title": "Remember listings between runs",
            "type": "boolean",
            "description": "Turns the actor into a monitor. Each run compares every listing with what the previous run of the same watchlist saw and fills in the change, previous price and alert columns. Schedule it daily and combine with the options below.",
            "default": false
          },
          "deltaName": {
            "title": "Watchlist name (optional)",
            "type": "string",
            "description": "Leave empty and one is derived from the mode and price settings. Type your own name to keep one memory across changes, or to run several independent watchlists.",
            "default": ""
          },
          "alertOn": {
            "title": "Send an alert for",
            "enum": [
              "new-listing",
              "price-below",
              "both"
            ],
            "type": "string",
            "description": "New listing: a listing not seen on the previous run (in Sold mode, a newly sold item). Price below: a listing at or under the limit below that was not already under it. Both: either.",
            "default": "new-listing"
          },
          "alertBelowSek": {
            "title": "Price limit for alerts (SEK)",
            "type": "integer",
            "description": "Used by \"Price below my limit\". Leave empty and price alerts are off."
          },
          "alertOnChangeOnly": {
            "title": "Only return rows that changed",
            "type": "boolean",
            "description": "With monitoring on, a listing already seen at the same price writes no row and is not billed. New listings, price changes and alerts are returned.",
            "default": false
          },
          "skipFirstRun": {
            "title": "Seed silently (no rows on the first run)",
            "type": "boolean",
            "description": "The first run of a search has nothing to compare with, so every listing is new. Turn this on to remember them without returning or billing them, so alerts start from the second run.",
            "default": false
          },
          "notifyUrl": {
            "title": "Send alerts to (Discord or Slack webhook, Telegram bot link, or any URL)",
            "type": "string",
            "description": "Optional. After a listing is billed, each alert row is posted here as one message with title, price, bids, end date and the Tradera link. Discord or Slack: paste the channel's webhook URL. Telegram: https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat id>. Any other URL receives JSON. Messages are free, and a failed message never fails the run (the row's notifyErrors says why). Stored encrypted, never logged or written to the results."
          },
          "notifyFormat": {
            "title": "Message format",
            "enum": [
              "auto",
              "discord",
              "slack",
              "telegram",
              "json"
            ],
            "type": "string",
            "description": "Leave on 'Detect from the link': discord.com links get Discord messages, hooks.slack.com Slack, api.telegram.org Telegram, anything else JSON. Pick one only to override that.",
            "default": "auto"
          },
          "maxNotificationsPerRun": {
            "title": "Most alert messages per run",
            "type": "integer",
            "description": "Alerts above this are still in the results; one \"more alerts\" message is sent instead. 0 sends only that message.",
            "default": 20
          },
          "testRun": {
            "title": "Try it first — only process the first 5",
            "type": "boolean",
            "description": "Turn this on to test your input on a small sample before running the full list. Turn it off to process everything.",
            "default": false
          },
          "onlyFound": {
            "title": "Hide rows with no result",
            "type": "boolean",
            "description": "Only keep rows where something was actually found. Misses are always free, whether or not you show them here.",
            "default": false
          },
          "includeKeywords": {
            "title": "Only keep listings containing",
            "type": "array",
            "description": "Optional, case-insensitive. Keeps only listings whose title, condition, seller or link contains at least one of these words. Applied after the listings are read, so you can get fewer rows than the limit above.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Skip listings containing",
            "type": "array",
            "description": "Optional, case-insensitive. Drops any listing whose title, condition, seller or link contains one of these words. Applied after the listings are read.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Stop after this many results",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. Stop the run once this many results have been found — useful for a quick, cheap sample. Leave blank for no limit."
          },
          "columns": {
            "title": "Which columns do you want?",
            "type": "array",
            "description": "Choose which pieces of information to include in each result row. All are included by default.",
            "items": {
              "type": "string",
              "enum": [
                "rowType",
                "itemId",
                "url",
                "title",
                "categoryId",
                "priceSek",
                "buyNowSek",
                "bids",
                "startDate",
                "endDate",
                "itemType",
                "listingStatus",
                "condition",
                "shippingSek",
                "sellerAlias",
                "sellerIsCompany",
                "checkedAt",
                "changeType",
                "previousPriceSek",
                "alertType",
                "notifyErrors",
                "priceBasis",
                "count",
                "soldCount",
                "medianSek",
                "p25Sek",
                "p75Sek",
                "lowSek",
                "highSek",
                "medianBids",
                "newestEndDate"
              ],
              "enumTitles": [
                "Row type",
                "Item ID",
                "Listing link",
                "Title",
                "Category ID",
                "Price (SEK)",
                "Buy-now price (SEK)",
                "Bids",
                "Start date",
                "End date",
                "Listing type",
                "Listing status",
                "Condition",
                "Shipping from (SEK)",
                "Seller handle",
                "Company seller",
                "Checked at",
                "Change since last run",
                "Previous price (SEK)",
                "Alert",
                "Alert delivery errors",
                "Summary: price basis",
                "Summary: listings",
                "Summary: sold",
                "Summary: median (SEK)",
                "Summary: 25th percentile (SEK)",
                "Summary: 75th percentile (SEK)",
                "Summary: lowest (SEK)",
                "Summary: highest (SEK)",
                "Summary: median bids",
                "Summary: newest end date"
              ]
            },
            "default": [
              "rowType",
              "itemId",
              "url",
              "title",
              "categoryId",
              "priceSek",
              "buyNowSek",
              "bids",
              "startDate",
              "endDate",
              "itemType",
              "listingStatus",
              "condition",
              "shippingSek",
              "sellerAlias",
              "sellerIsCompany",
              "checkedAt",
              "changeType",
              "previousPriceSek",
              "alertType",
              "notifyErrors",
              "priceBasis",
              "count",
              "soldCount",
              "medianSek",
              "p25Sek",
              "p75Sek",
              "lowSek",
              "highSek",
              "medianBids",
              "newestEndDate"
            ]
          },
          "expandRows": {
            "title": "One row per listing",
            "type": "boolean",
            "description": "Always on: every listing is its own row.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 1,
            "type": "integer",
            "description": "Parallel requests. Keep conservative — this target has no browser fallback, so getting blocked costs more than slow-and-steady.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy config. Residential recommended for anti-bot-sensitive targets.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}