SOCIAL MEDIA

Read Contra Job Feed API

Read one page of your signed-in Contra job feed. Returns the feed nodes exactly as Contra sends them plus the pagination cursor. Uses your own Contra account; upAPI stores nothing.

Last updated

contrajobs
Try it freeGet an API key

How to call it

Send one POST to api.upapi.io/contra-job-feed.get with your key in the X-Api-Key header and the parameters below as a JSON body. Each call spends 4 weighted units of your monthly quota. The operation times out after 45 seconds. Responses are not cached; every call runs the operation.

endpoint
POST https://api.upapi.io/contra-job-feed.get

Read Contra Job Feed API reference

Request parameters

sort
string — Contra feed sort key.
after
string — Opaque cursor from a previous page's endCursor.
docId
string — Override the pinned persisted-query id for this call.
first
integer — Page size.
preset
string — Contra feed preset, e.g. RECOMMENDED, SAVED or APPLIED.
search
string — Free-text feed search.
proxyUrl
string — Exit IP pinned to this account. Omit to use the shared pool.
sessionCookies
objectrequired — Contra session cookies. The job feed answers UNAUTHENTICATED without them. Your own Contra account's cookies; upAPI stores nothing.

Response fields

items
arrayrequired
elapsedMs
integerrequired
endCursor
stringrequired
fetchedAt
stringrequired
itemCount
integerrequired
hasNextPage
booleanrequired

Example request and response

The example response is generated from this operation’s published output schema — it shows the shape and field names, not values from a recorded call.

json — example request body
{
  "sort": "NEWEST",
  "first": 20,
  "preset": "RECOMMENDED",
  "sessionCookies": {}
}
json — example response shape
{
  "items": [
    {}
  ],
  "elapsedMs": 1,
  "endCursor": "example",
  "fetchedAt": "example",
  "itemCount": 1,
  "hasNextPage": false
}

Code snippets

cURL
curl
curl -X POST https://api.upapi.io/contra-job-feed.get \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: YOUR_API_KEY' \
  -d '{ "sort": "NEWEST", "first": 20, "preset": "RECOMMENDED", "sessionCookies": {} }'
JavaScript
javascript
const response = await fetch('https://api.upapi.io/contra-job-feed.get', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_API_KEY',
  },
  body: JSON.stringify({
  "sort": "NEWEST",
  "first": 20,
  "preset": "RECOMMENDED",
  "sessionCookies": {}
}),
});

const data = await response.json();
console.log(data);
Python
python
import requests

response = requests.post(
    'https://api.upapi.io/contra-job-feed.get',
    headers={
        'Content-Type': 'application/json',
        'x-api-key': 'YOUR_API_KEY',
    },
    json={
  "sort": "NEWEST",
  "first": 20,
  "preset": "RECOMMENDED",
  "sessionCookies": {}
},
)

print(response.json())
Go
go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

func main() {
	payload := []byte(`{ "sort": "NEWEST", "first": 20, "preset": "RECOMMENDED", "sessionCookies": {} }`)

	req, _ := http.NewRequest("POST", "https://api.upapi.io/contra-job-feed.get", bytes.NewBuffer(payload))
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("x-api-key", "YOUR_API_KEY")

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var result map[string]any
	json.Unmarshal(body, &result)
	fmt.Println(result)
}
PHP
php
<?php

$payload = json_encode([
    'sort' => 'NEWEST',
    'first' => 20,
    'preset' => 'RECOMMENDED',
    'sessionCookies' => new stdClass(),
]);

$ch = curl_init('https://api.upapi.io/contra-job-feed.get');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $payload,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Content-Type: application/json',
        'x-api-key: YOUR_API_KEY',
    ],
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
var_dump($data);
Ruby
ruby
require 'net/http'
require 'uri'
require 'json'

uri = URI('https://api.upapi.io/contra-job-feed.get')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'

request = Net::HTTP::Post.new(uri.path)
request['Content-Type'] = 'application/json'
request['x-api-key'] = 'YOUR_API_KEY'
request.body = { "sort": "NEWEST", "first": 20, "preset": "RECOMMENDED", "sessionCookies": {} }.to_json

response = http.request(request)
puts JSON.parse(response.body)
Java
java
import okhttp3.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;

OkHttpClient client = new OkHttpClient();
ObjectMapper mapper = new ObjectMapper();

String json = "{ \"sort\": \"NEWEST\", \"first\": 20, \"preset\": \"RECOMMENDED\", \"sessionCookies\": {} }";

RequestBody body = RequestBody.create(json, MediaType.get("application/json"));
Request request = new Request.Builder()
    .url("https://api.upapi.io/contra-job-feed.get")
    .post(body)
    .addHeader("Content-Type", "application/json")
    .addHeader("x-api-key", "YOUR_API_KEY")
    .build();

try (Response response = client.newCall(request).execute()) {
    Map<?, ?> result = mapper.readValue(response.body().string(), Map.class);
    System.out.println(result);
}
C#
csharp
using System.Net.Http;
using System.Net.Http.Json;
using System.Text.Json;

using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY");

var payload = JsonSerializer.Deserialize<object>("{ \"sort\": \"NEWEST\", \"first\": 20, \"preset\": \"RECOMMENDED\", \"sessionCookies\": {} }");
var response = await client.PostAsJsonAsync("https://api.upapi.io/contra-job-feed.get", payload);

var result = await response.Content.ReadFromJsonAsync<JsonElement>();
Console.WriteLine(result);

Frequently asked questions

How much does the Read Contra Job Feed API cost per call?

Each call spends 4 weighted units of your plan's monthly quota. Full pricing is at https://upapi.io/pricing.

How do I authenticate to the Read Contra Job Feed API?

Send your key in the X-Api-Key header. A free guest key is available without creating an account.

Are Read Contra Job Feed API responses cached?

No — every call runs the operation live; responses are not cached.

More Social Media APIs

Browse every Social Media API →