gitlab - List all the projects and all the groups - Stack Overflow
How to get a list of all your Gitlab personal projects via API?
Where do I find the project ID for the GitLab API? - Stack Overflow
Gitlab projects API "Search by project name" - How to Use GitLab - GitLab Forum
If only your private token is available, you can only use the API:
PROJECTS
Use the following command to request projects:
curl "https://<host>/api/v4/projects?private_token=<your private token>"
This will return you the first 20 entries. To get more you can add the paramater per_page
curl "https://<host>/api/v4/projects?private_token=<your private token>&per_page=100"
with this parameter you can request between 20and 100 entries (see REST API Pagination documentation).
If you now want all projects, you have to loop through the pages. To get to another page add the parameter page.
curl "https://<host>/api/v4/projects?private_token=<your private token>&per_page=100&page=<page_number>"
Now you may want to know how many pages there are. For that, add the curl parameter --head. This will not return the payload, but the header.
The result should look like this:
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 13 Jul 2017 17:43:24 GMT
Content-Type: application/json
Content-Length: 29428
Cache-Control: no-cache
Link: <request link>
Vary: Origin
X-Frame-Options: SAMEORIGIN
X-Next-Page: 2
X-Page: 1
X-Per-Page: 20
X-Prev-Page:
X-Request-Id: 80ecc167-4f3f-4c99-b09d-261e240e7fe9
X-Runtime: 4.117558
X-Total: 312257
X-Total-Pages: 15613
Strict-Transport-Security: max-age=31536000
The two interesting parts here are X-Totaland X-Total-Pages. The first is the count of available entries and the second the count of total pages.
I suggest to use python or some other kind of script to handle the requests and concat the results at the end.
If you want to refine the search, consult this wiki page: https://docs.gitlab.com/api/projects.html#projects-api
GROUPS
For groups simply replace projects with groups in the curls.
https://docs.gitlab.com/api/groups.html#list-groups
UPDATE:
Here is the official list of Gitlab API clients/wrappers: https://docs.gitlab.com/api/rest/third_party_clients/
I highly recommend using one of these.
In bash for Gitlab API V4:
#!/bin/bash
GL_DOMAIN=""
GL_TOKEN=""
echo "" > gitlab_projects_urls.txt
for ((i=1; ; i+=1)); do
contents=$(curl "$GL_DOMAIN/api/v4/projects?private_token=$GL_TOKEN&per_page=100&page=$i")
if jq -e '. | length == 0' >/dev/null; then
break
fi <<< "$contents"
echo "$contents" | jq -r '.[].ssh_url_to_repo' >> gitlab_projects_urls.txt
done
Hi all,
I want to add a list of the titles and dates of all my Gitlab personal projects to my website via API.
There is some documentation on how to get the first few of the the projects on Gitlab but I could not figure out a way to get all of only mine.
Is there any way to do that?
Thanks.
I just found out an even easier way to get the project id: just see the HTML content of the gitlab page hosting your project. There is an input with a field called project_id, e.g:
<input type="hidden" name="project_id" id="project_id" value="335" />
The latest version of GitLab 11.4 at the time of this writing now puts the Project ID at the top of the frontpage of your repository.
Screenshot:

Python solution Very useful information about gitlab api.
python-gitlab.readthedocs.io
import gitlab
# private token or personal token authentication
gl = gitlab.Gitlab('https://gitlab.company.be', private_token='dklsfjksldjfkdsjf', api_version=4)
gl.auth()
project = gl.projects.get('path/to/project')
items = project.repository_tree()
print(items)
You've partly answered your own question in the comment (you can post that as an answer).
As for the :file_path, take a look at the API for repo files.
GET /projects/:id/repository/files/:file_path
CURLing:
curl --request GET --header 'PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK' \
'https://gitlab.example.com/api/v4/projects/13083/repository/files/app%2Fmodels%2Fkey%2Erb?ref=master'
You haven't given a file_path you want to use, so taking gitlab-ce as an example - the file "app/models/key.rb", is url-encoded to app%2Fmodels%2Fkey%2Erb:
curl --request GET \
'https://gitlab.com/api/v3/projects/13083/repository/files/app%2Fmodels%2Fkey%2Erb?ref=master'
The project id can be specified as the integer id or the URL-encoded path. So instead of 13083, the project namespace gitlab-org/gitlab-ce url-encoded can be used as:
curl --request GET \
'https://gitlab.com/api/v3/projects/gitlab-org%2Fgitlab-ce/repository/files/app%2Fmodels%2Fkey%2Erb?ref=master'
You may also want to look at using an existing API like pyapi-gitlab.