{
  "openapi": "3.0.1",
  "info": {
    "title": "Behance Scraper - Projects, Creators & Designer Leads",
    "description": "Scrape Behance projects, creators and creative jobs: portfolios, views/appreciations, tools, tags, plus designer leads with availability-for-hire, budget, social links, location and contact enrichment. Keyless, no browser, with a new-content monitor. Independent tool, not affiliated with Behance.",
    "version": "0.1",
    "x-build-id": "AScGF4YiCKtj64IhM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~behance-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-behance-scraper",
        "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/scrapesage~behance-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-behance-scraper",
        "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/scrapesage~behance-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-behance-scraper",
        "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",
        "properties": {
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Free-text searches run on Behance for each selected content type (e.g. \"logo\", \"mobile app\", \"3d character\"). Each search returns up to \"Max items per search\" results, and Behance serves up to 1,000 per search. Combine with creative fields, tools, sort and location.",
            "items": {
              "type": "string"
            }
          },
          "contentTypes": {
            "title": "Content types",
            "type": "array",
            "description": "What to scrape: design Projects, Creators (designer profiles = leads), and/or creative Jobs. Searches, fields and filters apply to each selected type.",
            "items": {
              "type": "string",
              "enum": [
                "projects",
                "creators",
                "jobs"
              ],
              "enumTitles": [
                "Projects",
                "Creators (leads)",
                "Jobs"
              ]
            },
            "default": [
              "projects"
            ]
          },
          "creativeFields": {
            "title": "Creative fields",
            "type": "array",
            "description": "Limit results to one or more of Behance's creative fields, by name (e.g. UI/UX, Branding, Illustration, Motion Graphics, Web Design, Photography, Logo Design). Each field is combined with each search query. A name Behance does not have is skipped and named on the run card, so no unfiltered rows are billed for it.",
            "items": {
              "type": "string"
            }
          },
          "tools": {
            "title": "Tools (projects)",
            "type": "array",
            "description": "Filter projects by the software used, e.g. Figma, Photoshop, Illustrator, Blender, After Effects. Each tool runs its own search, so you get projects made with any of them.",
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "recommended",
              "most_appreciated",
              "most_viewed",
              "most_recent",
              "most_commented"
            ],
            "type": "string",
            "description": "Sort order for searches. Different sorts surface different results, widening coverage.",
            "default": "recommended"
          },
          "timeframe": {
            "title": "Timeframe (projects)",
            "enum": [
              "all",
              "today",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Behance's own time filter for project searches. With Most appreciated, Most viewed or Most commented it ranks projects by their activity in that window (what is popular today, this week or this month); it does not limit the publish date. For newly published work use Sort = Most recent, or \"Published within (days)\".",
            "default": "all"
          },
          "publishedWithinDays": {
            "title": "Published within (days, projects)",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep projects published in the last N days. Leave empty for no limit. Pairs well with Sort = Most recent."
          },
          "country": {
            "title": "Country (creators & jobs)",
            "type": "string",
            "description": "Country to target creators and jobs by location: a two-letter code (US, GB, DE, FR, IN, BR) or an English name (Germany). Jobs keep on-site jobs there and remote jobs open to it."
          },
          "state": {
            "title": "State / region (creators)",
            "type": "string",
            "description": "State or region to target creators by location, used with Country (e.g. California or CA for the US)."
          },
          "city": {
            "title": "City (creators & jobs)",
            "type": "string",
            "description": "City to target creators and jobs by location, e.g. Berlin, London, New York. Best used with Country; a city given alone is searched in the country most of its Behance members list."
          },
          "availableForFreelance": {
            "title": "Available for freelance (creators)",
            "type": "boolean",
            "description": "Only return creators who flag themselves as available for freelance work.",
            "default": false
          },
          "availableForFullTime": {
            "title": "Available for full-time (creators)",
            "type": "boolean",
            "description": "Only return creators who flag themselves as available for full-time work.",
            "default": false
          },
          "jobTypes": {
            "title": "Job types (jobs)",
            "type": "array",
            "description": "Filter jobs by type. Behance uses Freelance, Full-time and Contract.",
            "items": {
              "type": "string",
              "enum": [
                "FREELANCE",
                "FULLTIME",
                "CONTRACT"
              ],
              "enumTitles": [
                "Freelance",
                "Full-time",
                "Contract"
              ]
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Only return jobs flagged as remote.",
            "default": false
          },
          "minFollowers": {
            "title": "Minimum followers (creators)",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep creators with at least this many followers. 0 = no filter.",
            "default": 0
          },
          "minAppreciations": {
            "title": "Minimum appreciations",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep creators/projects with at least this many appreciations (likes). 0 = no filter.",
            "default": 0
          },
          "minViews": {
            "title": "Minimum views",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep creators/projects with at least this many views. 0 = no filter.",
            "default": 0
          },
          "availableForHireOnly": {
            "title": "Available-for-hire creators only",
            "type": "boolean",
            "description": "Drop creators who are not open to freelance or full-time work - keep only contactable, in-market leads.",
            "default": false
          },
          "withContactOnly": {
            "title": "Creators with contact only",
            "type": "boolean",
            "description": "Only keep creator leads that have at least one of: website, social link, or enriched email.",
            "default": false
          },
          "profileUrls": {
            "title": "Profile URLs / usernames",
            "type": "array",
            "description": "Direct Behance profiles to pull as full creator leads, e.g. https://www.behance.net/uxpolly or just \"uxpolly\".",
            "items": {
              "type": "string"
            }
          },
          "projectUrls": {
            "title": "Project URLs / ids",
            "type": "array",
            "description": "Direct Behance project (gallery) pages or numeric ids, e.g. https://www.behance.net/gallery/243538069/My-Project or 243538069.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (mixed)",
            "type": "array",
            "description": "Optional mixed list of behance.net URLs - profiles, gallery projects, or /search and /joblist result pages. Each is auto-classified, and a pasted search link keeps every filter it carries.",
            "items": {
              "type": "string"
            }
          },
          "urlsFromFile": {
            "title": "Import URLs from a file",
            "type": "string",
            "description": "Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically."
          },
          "includeProjectDetails": {
            "title": "Include project details",
            "type": "boolean",
            "description": "Adds each project's description, tags, tools used, license and module/image counts. They come with the search itself (no extra page per project); turn off for leaner rows.",
            "default": true
          },
          "includeCreatorProfiles": {
            "title": "Include full creator profiles",
            "type": "boolean",
            "description": "The full lead for each creator: occupation, company, website, web links, work history, About text and complete availability/budget. For projects, attaches the primary owner's lead to each project. Turn off for leaner rows.",
            "default": true
          },
          "includeJobDetails": {
            "title": "Include job details",
            "type": "boolean",
            "description": "Adds each job's description, posting and expiry dates, application link, company website, creative fields and applicant count (one small extra request per job).",
            "default": true
          },
          "enrichContactEmails": {
            "title": "Enrich contact emails (lead wedge)",
            "type": "boolean",
            "description": "Read each creator's own website (home + contact/about pages) for an email, phone numbers and social profiles they do not list on Behance. Behance shows no emails to logged-out visitors, so this is the way to get them. Charged as Contact enrichment only when the website gives new contact data.",
            "default": false
          },
          "emitProjectOwners": {
            "title": "Also emit project owners as creator leads",
            "type": "boolean",
            "description": "When scraping projects, also output a separate creator-lead record for each project's owner (deduplicated), not just the summary attached to the project.",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Global cap on the total number of records (projects + creators + jobs) scraped across all searches and inputs. Searches take turns, so the cap is shared fairly between them.",
            "default": 200
          },
          "maxItemsPerQuery": {
            "title": "Max items per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Rows each search delivers (Behance serves up to 1,000 results per search). When your filters drop results, the search reads further pages to fill it. In monitor mode it is the number of top results checked per search.",
            "default": 24
          },
          "deduplicateCreators": {
            "title": "Deduplicate creators",
            "type": "boolean",
            "description": "Emit each creator only once per run even if they appear across multiple searches or projects.",
            "default": true
          },
          "monitorMode": {
            "title": "Monitor mode (only new content)",
            "type": "boolean",
            "description": "Remember project/creator/job ids returned in previous runs (in a named key-value store) and emit only NEW ones next time. Pair with an Apify Schedule to watch a field, a search, or a location for fresh portfolios, creators or jobs. The schedule decides WHEN to run; monitor mode decides WHAT is new.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Name of the key-value store that holds the monitor's memory. Use different names to track different watches independently. Lowercase letters, digits and hyphens only.",
            "default": "behance-monitor"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many detail requests (job details, creator websites) run in parallel.",
            "default": 6
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. Apify Residential (US) is the default and the recommended choice; a fresh session is used whenever Behance refuses one. Creators' own websites are always read over Apify datacenter proxies.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}