Scripting in radiotherapy treatment planning systems not only simplifies routine planning tasks but can also be used for clinical research. Treatment planning scripting can only be utilized in a system that has a built-in scripting interface. Among the commercially available treatment planning systems, Pinnacle (Philips) and Raystation (Raysearch Lab.) have inherent scripting functionality. CMS XiO (Elekta) is a widely used treatment planning system in radiotherapy centres around the world, but it does not have an interface that allows the user to script radiotherapy plans. In this study an external scripting interface, PyCMSXiO, was developed for XiO using the Python programming language. The interface was implemented as a python package/library using a modern object-oriented programming methodology. The package was organized as a hierarchy of different classes (objects). Each class (object) corresponds to a plan object such as the beam of a clinical radiotherapy plan. The interface of classes was implemented as object functions. Scripting in XiO using PyCMSXiO is comparable with Pinnacle scripting. This scripting package has been used in several research projects including commissioning of a beam model, independent three-dimensional dose verification for IMRT plans and a setup-uncertainty study. Ease of use and high-level functions provided in the package achieve a useful research tool. It was released as an open-source tool that may benefit the medical physics community.