# GitLab Projects Scraper - Public Repositories & Activity (`thirdwatch/gitlab-projects-scraper`) Actor

Search public GitLab projects and export stable IDs, topics, stars, forks, activity, namespaces, branches, and repository links.

- **URL**: https://apify.com/thirdwatch/gitlab-projects-scraper.md
- **Developed by:** [Thirdwatch](https://apify.com/thirdwatch) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 gitlab projects

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## GitLab Projects Scraper

> Export structured public GitLab public software projects for discovery, comparison, monitoring, and governance.

### What you get

Search the public GitLab catalog and save one deduplicated row per public software project. Results include stable project ID, namespace path, description, topics, repository and README links, default branch, stars, forks, creation time, last activity, archive status, and visibility. Use discovery inputs for market maps and exact-name inputs, when available, for stable monitoring cohorts.

### Output fields

| Field group | Description |
|---|---|
| Identity | Canonical `projectId`, display name, and source URL. |
| Release evidence | Current version or tag data and source timestamps when published. |
| Adoption signals | Public download, install, pull, star, or rating metrics available from the source. |
| Ownership and links | Public author, owner, project, repository, documentation, or homepage references. |
| Classification | Public tags, categories, keywords, packaging, or status values. |
| Provenance | Search query and named upstream source for traceable analysis. |

### Example output

```json
{"projectId":250833,"pathWithNamespace":"gitlab-org/gitlab-runner","topics":["ci"],"stars":10000,"forks":2000,"lastActivityAt":"2026-07-20T00:00:00Z","visibility":"public","url":"https://gitlab.com/gitlab-org/gitlab-runner"}
````

### Input parameters

| Parameter | Required | Description |
|---|---|---|
| `queries` | No | Up to five public project search phrases. |
| `projectPaths` | No | Up to 25 exact namespace/project paths or URLs. |
| `sort` | No | Stars, activity, created date, or updated date. |
| `includeArchived` | No | Include public archived projects; defaults to false. |
| `apiToken` | No | Optional secret token for higher public API limits. |
| `maxResultsPerQuery` | Yes | Maximum projects per query; defaults to 25. |
| `maxResults` | Yes | Maximum unique projects across all modes; defaults to 100. |

At least one discovery or exact-name input is required. Result limits apply after cross-input deduplication, and only saved unique rows are charged.

### Use cases

- **Developers:** discover alternatives and compare public release evidence.
- **Platform teams:** monitor versions, tags, compatibility, and activity for a fixed portfolio.
- **Security teams:** build an evidence inventory before joining vulnerability and deployment data.
- **Product researchers:** map a developer ecosystem with repeatable queries and dated snapshots.

### Limitations

The Actor saves only public GitLab.com projects. Search is subject to GitLab ranking and rate limits, and star or activity counts do not establish maintainership quality or software safety.

### Compared to alternatives

Current Apify Store alternatives include logiover/gitlab-scraper and parseforge/gitlab-public-projects-scraper. Thirdwatch combines discovery and bounded monitoring inputs where the source permits them, saves canonical evidence URLs, deduplicates before charging, provides exactly four PPE tiers, and ships ten ready-to-save Task recipes plus a five-article workflow library. Compare current Store listings directly because competitor features and pricing can change.

### FAQ

#### Does this Actor access private packages or accounts?

No. It collects only metadata available from the public source and does not sign in, bypass access controls, or request private registry credentials.

#### How should I monitor a fixed portfolio?

Use exact names where supported, keep result limits explicit, save the input as an Apify Task, and retain dated datasets. Do not let an empty or failed run overwrite the previous successful snapshot.

#### Are popularity metrics quality or security scores?

No. Downloads, installs, pulls, stars, and ratings help prioritize review, but they do not replace vulnerability, provenance, license, maintainership, or internal deployment evidence.

#### Where can I find more workflows?

Visit [Thirdwatch developer-data scrapers](https://thirdwatch.dev/scrapers/gitlab-projects-scraper) and the related [GitHub](https://apify.com/thirdwatch/github-repositories-scraper?fpr=9m2cd6), [npm](https://apify.com/thirdwatch/npm-package-scraper?fpr=9m2cd6), and [OSV](https://apify.com/thirdwatch/osv-vulnerability-scraper?fpr=9m2cd6) Actors.

Last verified: 2026-07

# Actor input Schema

## `queries` (type: `array`):

Keywords to search across public GitLab projects.

## `projectPaths` (type: `array`):

Exact namespace/project paths or public GitLab URLs.

## `sort` (type: `string`):

Order discovery queries by stars, recent activity, creation, or update time.

## `includeArchived` (type: `boolean`):

Include public archived projects in discovery results.

## `apiToken` (type: `string`):

Optional token for a higher public API rate limit. It is never included in output.

## `maxResultsPerQuery` (type: `integer`):

Maximum projects requested for each search query.

## `maxResults` (type: `integer`):

Maximum unique public projects saved across all input modes.

## Actor input object example

```json
{
  "queries": [
    "gitlab runner"
  ],
  "projectPaths": [],
  "sort": "stars",
  "includeArchived": false,
  "maxResultsPerQuery": 25,
  "maxResults": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("thirdwatch/gitlab-projects-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("thirdwatch/gitlab-projects-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call thirdwatch/gitlab-projects-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=thirdwatch/gitlab-projects-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "GitLab Projects Scraper - Public Repositories & Activity",
        "description": "Search public GitLab projects and export stable IDs, topics, stars, forks, activity, namespaces, branches, and repository links.",
        "version": "1.0",
        "x-build-id": "wgOHFgvPOJJ2Vi26k"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/thirdwatch~gitlab-projects-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-thirdwatch-gitlab-projects-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/thirdwatch~gitlab-projects-scraper/runs": {
            "post": {
                "operationId": "runs-sync-thirdwatch-gitlab-projects-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/thirdwatch~gitlab-projects-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-thirdwatch-gitlab-projects-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",
                "required": [
                    "maxResultsPerQuery",
                    "maxResults"
                ],
                "properties": {
                    "queries": {
                        "title": "Search queries",
                        "maxItems": 5,
                        "type": "array",
                        "description": "Keywords to search across public GitLab projects.",
                        "items": {
                            "type": "string",
                            "maxLength": 200
                        },
                        "default": [
                            "gitlab runner"
                        ]
                    },
                    "projectPaths": {
                        "title": "Exact project paths",
                        "maxItems": 25,
                        "type": "array",
                        "description": "Exact namespace/project paths or public GitLab URLs.",
                        "items": {
                            "type": "string",
                            "maxLength": 300
                        },
                        "default": []
                    },
                    "sort": {
                        "title": "Sort order",
                        "enum": [
                            "stars",
                            "activity",
                            "created",
                            "updated"
                        ],
                        "type": "string",
                        "description": "Order discovery queries by stars, recent activity, creation, or update time.",
                        "default": "stars"
                    },
                    "includeArchived": {
                        "title": "Include archived projects",
                        "type": "boolean",
                        "description": "Include public archived projects in discovery results.",
                        "default": false
                    },
                    "apiToken": {
                        "title": "Optional GitLab token",
                        "type": "string",
                        "description": "Optional token for a higher public API rate limit. It is never included in output."
                    },
                    "maxResultsPerQuery": {
                        "title": "Results per query",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum projects requested for each search query.",
                        "default": 25
                    },
                    "maxResults": {
                        "title": "Maximum total results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum unique public projects saved across all input modes.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            },
                            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
