{
  "name": "OfferUp Scraper: Marketplace Listings, Cars & Deals — Automated Extraction to CSV & Sheets (UnitBytes)",
  "nodes": [
    {
      "parameters": {
        "content": "## ⚡ OfferUp Scraper: Marketplace Listings, Cars & Deals — Automated n8n Pipeline\n**Powered by [UnitBytes on Apify](https://apify.com/unitbytes/offerup-scraper?fpr=939u3w&fp_sid=n8n_template)** ($0.0008 / item)\n\n### 🚀 30-Second Setup Instructions\n1. **Get your free Apify API Token**: Open [offerup-scraper on Apify Store](https://apify.com/unitbytes/offerup-scraper?fpr=939u3w&fp_sid=n8n_template) and copy your API token from **Settings → Integrations**.\n2. **Paste your token & search parameters**: Double-click the **\"1. Set Apify Token & Input\"** node and replace `YOUR_APIFY_API_TOKEN` with your token.\n3. **Click \"Test Workflow\"**: The HTTP Request node calls the synchronous UnitBytes Apify endpoint, normalizes the extracted records, and exports a clean CSV file ready for Google Sheets, Airtable, Slack, or OpenAI.\n\n📖 **Documentation & Schema Reference**: [https://unitbytes.com/actors/offerup-scraper/](https://unitbytes.com/actors/offerup-scraper/)",
        "height": 340,
        "width": 520,
        "color": 4
      },
      "id": "8627ab9b-ce55-53df-a6c1-8d3945192044",
      "name": "Sticky Note — Setup Guide",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        180,
        80
      ]
    },
    {
      "parameters": {
        "content": "### 📊 Connect Your Destination\nThe **\"3. Normalize Output Fields\"** node outputs flat records (`listingId, url, title, price, originalPrice`).\n\n- **Google Sheets / Airtable**: Connect a Google Sheets (`Append or Update Row`) node after Step 3.\n- **Slack / Telegram / Email Alerts**: Connect a Filter node + Slack node to alert your team on new deals or reviews.\n- **AI Agent / OpenAI**: Connect an OpenAI / LLM Chain node to summarize or classify extracted items.",
        "height": 220,
        "width": 420,
        "color": 5
      },
      "id": "00b234a5-b358-58df-95b3-10c8c0436efb",
      "name": "Sticky Note — Destinations",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        880,
        140
      ]
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 24
            }
          ]
        }
      },
      "id": "8d330003-880e-5ea1-97d2-06b8ba7d56dd",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        220,
        480
      ]
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "b4cd0445-510c-5624-a3bf-ab27123ef4a4",
              "name": "apifyToken",
              "value": "YOUR_APIFY_API_TOKEN",
              "type": "string"
            },
            {
              "id": "9f70093c-0d29-5bd8-b85c-4600a6311f51",
              "name": "actorInput",
              "value": "{\"searchQuery\": \"iphone 15\", \"zipCode\": \"90001\", \"startUrls\": [], \"proxyConfiguration\": {\"useApifyProxy\": true, \"apifyProxyGroups\": [\"RESIDENTIAL\"]}}",
              "type": "object"
            }
          ]
        },
        "options": {}
      },
      "id": "d9cacf32-e752-5016-935e-94503ce4c40a",
      "name": "1. Set Apify Token & Input",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        460,
        480
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "=https://api.apify.com/v2/acts/unitbytes~offerup-scraper/run-sync-get-dataset-items?token={{ $json.apifyToken }}&format=json&clean=true",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify($json.actorInput) }}",
        "options": {
          "timeout": 300000
        }
      },
      "id": "23c6c6aa-2329-574f-b747-30d2ce1ad66e",
      "name": "2. Run UnitBytes (offerup-scraper)",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        700,
        480
      ]
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "e4c42bcd-e7a0-5567-8c0a-1e1618d91b84",
              "name": "listingId",
              "value": "={{ $json.listingId }}",
              "type": "string"
            },
            {
              "id": "90aac02b-9113-518d-a3a0-42003e7aa00b",
              "name": "url",
              "value": "={{ $json.url }}",
              "type": "string"
            },
            {
              "id": "2aa7d259-a98a-5adf-a542-d01508de8237",
              "name": "title",
              "value": "={{ $json.title }}",
              "type": "string"
            },
            {
              "id": "772da73c-6220-5f87-926a-01b087306053",
              "name": "price",
              "value": "={{ $json.price }}",
              "type": "string"
            },
            {
              "id": "6885200f-fe1b-56de-9138-11d91cec27a7",
              "name": "originalPrice",
              "value": "={{ $json.originalPrice }}",
              "type": "string"
            },
            {
              "id": "76de0dc4-82ec-5eb3-8e99-099a12a9314a",
              "name": "isFirmPrice",
              "value": "={{ $json.isFirmPrice }}",
              "type": "string"
            }
          ]
        },
        "includeOtherFields": true,
        "options": {}
      },
      "id": "9d39839e-d55b-5a75-88bd-1e2bee487e0d",
      "name": "3. Normalize Output Fields",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        940,
        480
      ]
    },
    {
      "parameters": {
        "operation": "csv",
        "options": {
          "fileName": "offerup-scraper-dataset-export.csv"
        }
      },
      "id": "2ef465be-80ac-542b-a3f9-54a140337efa",
      "name": "4. Export to CSV File",
      "type": "n8n-nodes-base.convertToFile",
      "typeVersion": 1.1,
      "position": [
        1180,
        480
      ]
    }
  ],
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "1. Set Apify Token & Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1. Set Apify Token & Input": {
      "main": [
        [
          {
            "node": "2. Run UnitBytes (offerup-scraper)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2. Run UnitBytes (offerup-scraper)": {
      "main": [
        [
          {
            "node": "3. Normalize Output Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3. Normalize Output Fields": {
      "main": [
        [
          {
            "node": "4. Export to CSV File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false,
    "instanceId": "030f9420-0ca8-5240-8fe8-208e287a8b19"
  },
  "tags": [
    {
      "name": "Web Scraping"
    },
    {
      "name": "Apify"
    },
    {
      "name": "UnitBytes"
    },
    {
      "name": "Classifieds & Local Data"
    }
  ]
}