Open Source Surveillance API

This is documentation regarding Open Source Surveillance system - https://os-surveillance.io

Search

  • Social media
  • Events
  • Crimes
  • Critical Infrastructure
  • Public Cameras
  • Internet Exposed Devices
  • Wifi networks
  • Transportation system
  • News
  • and more

based on coordinates

Search

  • Telegram
  • Twitter
  • Instagram
  • Threads
  • Youtube
  • Tiktok

based on hashtag

Was this section helpful?

What made this section unhelpful for you?

Base URL

Production:

https://osint.os-surveillance.io/api

Language Box

Authentication

Every request must contain Authorization Bearer, find it on settings page.

Was this section helpful?

What made this section unhelpful for you?

Workflow

  1. Add new Workspace (i.e. territory to research). Provide latitude, longitude, radius and name - save returned workspace id for later
    1. Maximum radius is 3000000 meters.
    2. You can create one big workspace and keep all information there
  2. Run search based on provided coordinates
  3. Check progress of your task
  4. If task is done, make request to get results
    1. Or if parameter “completed” increases, it means that module is finished
  5. Check if any module failed (Optional)
  6. Next time you search, use previously obtained workspace id
Was this section helpful?

What made this section unhelpful for you?

Modules

Open Source Surveillance system supports following sources and categories

Social Media

  • airbnb
  • alltrails
  • bikemap
  • booking
  • diveboard
  • findpenguins
  • flickr
  • instagram
  • outdooractive
  • snapchat
  • sports_tracker
  • strava
  • twitter
  • vkontakte
  • weibo
  • wikiloc
  • youtube

Events

  • amber_alerts
  • craigslist
  • crimes
  • crimes2
  • eventbrite
  • experiences
  • events1
  • events2
  • events3
  • events4
  • events5
  • facebook_events
  • facebook_marketplace
  • global_incident
  • news
  • offenders
  • ticketmaster
  • weather
  • zillow

Critical infrastructure

  • water
  • power
  • emergency
  • military
  • transportation
  • communication
  • sacral

Cameras

  • traffic
  • worldcam
  • windy
  • surveillance

Networks

  • network
  • bluetooth
  • cell

Transportation

  • incidents
  • vessel
  • planes
  • amtrak
  • waze

Shodan

  • Cameras
    • screenshot
    • geohttpserver
    • blueiris
    • motioneye
    • dahua
    • hikvision
    • axis
    • vivotek
    • netwave
    • amcrest
    • rtsp
    • netcam
  • Industrial Control Systems
    • nmea
    • siemens
    • crestron
    • moxa
    • iec
    • omron
    • red
    • ipc@chip
    • nordex
    • tank
    • bluekeep
    • modbus
    • bacnet
    • tridium
    • building
  • Internet of Things
    • printers
    • mqtt
    • snmp
    • kasa
  • Vulnerabilities
    • proxyshell
    • bluekeep

Other

  • stores
  • newspapaer
  • trestle (address lookup)
  • ai_satellite_mapbox
  • ai_satellite_bing
  • ai_satellite_maptiler
  • ai_satellite_arcgis
  • ai_satellite_here
  • ai_satellite_nasa
  • ai_satellite_landsat
  • ai_satellite_google
  • timelapse

Hashtag

  • instagram
  • telegram
  • threads
  • twitter
  • tiktok
  • youtube

Username

  • flickr
  • sports_tracker
  • instagram
  • twitter
  • youtube
Was this section helpful?

What made this section unhelpful for you?

Location

Below script

  • Creates new workspace with coordinates in New York by making request to /addCoordinates
  • Search Flickr and Vkontakte posts in provided coordinates and bounding box by making request to /search
  • Ask for task status by making request to /getProgress/{search_id}
  • Retrieve search results when it's ready by making request to /getSearchResults/{search_id}
PYTHON
import requests import time
headers = { "Authorization": "Bearer XXXX", "Content-Type": "application/json" } BASE_URL = "https://osint.os-surveillance.io/api"
modules_to_run = ["flickr", "vkontakte"]
#Add new workspace to the database
def add_workspace():
url = BASE_URL + "/addCoordinates/"
payload = {
"title": "New York",
"position": {
"lat": 40.72020796700515,
"lng": -74.0401684945897
},
"radius": 30000
}
response = requests.post(url, headers=headers, json=payload)
workspace_id = response.json()['workspace_id']
return workspace_id
#Search for data in the workspace
#pass workspace_id from add_workspace()
#include latitude, longitude and bounding box of the area
def search(wokspace_id): url = BASE_URL + f"/search/"
payload = {
"options":
modules_to_run,
"keywords":None,
"date_from":None,
"date_to":None,
"only_new":False,
"coordinates_id":wokspace_id,
"lat":40.71846412371451, # center latitude
"lng":-73.99740740984262, # center longitude
"ne_lat":40.74334880686837, # north east latitude
"ne_lng":-73.81237074710944, # north east longitude
"sw_lat":40.67945984569057, # south west latitude
"sw_lng":-74.16341826297858 # south west longitude
}
response = requests.request("POST", url, headers=headers, json=payload)
search_pk = response.json()['search_pk']
return search_pk
#Check progress of the search request
def get_progress(search_pk): url = BASE_URL + f"/getProgress/{search_pk}/"
response = requests.request("GET", url, headers=headers)
return response.json()
#Get results of the search request
def get_results(search_pk): url = BASE_URL + f"/getSearchResults/{search_pk}/"
response = requests.request("GET", url, headers=headers)
r_json = response.json()
return response.json()
def check_errors(): url = BASE_URL + "/checkErrors/"
response = requests.request("GET", url, headers=headers)
return response.json()['errors']
pp = get_progress("21")
workspace_id = add_workspace() search_pk = search(workspace_id) # next time when searching in this area, use same workspace_id
while True: progress = get_progress(search_pk) print(progress['progress']) if progress['progress'] == 100.0: results = get_results(search_pk) break else: time.sleep(1)
for result in results: for item in result['objects']: print(item) # print(item['title']) # print(item['timestamp']) # print(item['photo_url']) # print(item['location'])

Hashtag monitoring

Search

  • Telegram
  • Twitter
  • Instagram
  • Threads
  • Youtube
  • Tiktok

based on hashtag